为什么这个md5不匹配

时间:2014-04-22 05:41:35

标签: java encoding md5

我最近开始使用Apache DigestUtils进行一些加密。我只是想使用md5哈希进行授权,但我在这个主题中是一个绝对的初学者,并且通常在Java中没有经验。这个库的API为我提供了方法md5,md5hex。 如果我没有弄错的话,这些结果在输出中只是hexString(我甚至不确定这意味着什么)和常规字节。

String b1 = DigestUtils.md5hex("Some String");
String b2 = DigestUtils.md5hex("Some String");

结果是83beb8c4fa4596c8f7b565d390f494e2& 83beb8c4fa4596c8f7b565d390f494e2 但与==的比较导致错误

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

}

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

2 个答案:

答案 0 :(得分:2)

由于==不是在Java中比较String的方式,因此请使用.equals

例如......

if (b1.equals(b2)) {...

答案 1 :(得分:0)

" =="意味着与价值进行比较。

  1. 如果比较两个对象类型对象(如String,Date),则比较值是jvm中的唯一引用地址。这意味着您想知道它们是否是同一个对象

  2. 如果比较两种基本类型(例如int,float,double ...),则比较值是它们的实际值。

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

    此外,如果您定义自己的类,则应覆盖equals()函数以比较类的对象。