Java 为什么md5不匹配

Java 为什么md5不匹配,java,encoding,md5,Java,Encoding,Md5,我最近开始使用Apache DigestUtils进行加密。我只是想使用md5哈希进行授权,但我在这个主题上是一个绝对的初学者,并且通常没有Java方面的经验。这个库的API为我提供了方法md5、md5hex。 如果我没有弄错的话,它们的结果只是在输出中以十六进制字符串(我甚至不知道这意味着什么)和常规字节的形式不同 String b1 = DigestUtils.md5hex("Some String"); String b2 = DigestUtils.md5hex("Some String

我最近开始使用Apache DigestUtils进行加密。我只是想使用md5哈希进行授权,但我在这个主题上是一个绝对的初学者,并且通常没有Java方面的经验。这个库的API为我提供了方法md5、md5hex。 如果我没有弄错的话,它们的结果只是在输出中以十六进制字符串(我甚至不知道这意味着什么)和常规字节的形式不同

String b1 = DigestUtils.md5hex("Some String");
String b2 = DigestUtils.md5hex("Some String");
结果是83beb8c4fa4596c8f7b565d390f494e2和83beb8c4fa4596c8f7b565d390f494e2 但是与==的比较结果为false

    if (b1 == b2){
      System.out.println("Matching")
}


我很困惑,我找不到关于这个主题的介绍来源(对于java!)

因为
=
不是java中比较
字符串的方式,请使用
.equals

例如

if (b1.equals(b2)) {...
“==”表示与值进行比较

  • 如果比较两个对象类型对象(例如字符串、日期),比较的值是它们在jvm中的唯一引用地址。这意味着你想知道它们是否是同一个物体

  • 如果比较两个基本类型(例如int、float、double…),比较的值就是它们的实际值

  • 因此,如果我们想比较两个对象,我们通常使用equals()函数而不是“==”,因为我们只想知道它们是否具有相同的属性值


    此外,如果定义自己的类,则应该重写equals()函数来比较类的对象。

    两个字符串,两个地址。尝试
    if(b1.等于(b2)