比较 MD5 字符串

Raz*_*Bos 2 java string md5

我有一个java代码,我通过套接字发送md5以在另一端接收。我将密码作为输入并创建自己的 md5,以检查通过套接字收到的 md5 以进行身份​​验证。

两个 md5 字符串具有相同的字节模式,但当我对两个 md5 模式进行相等测试时,String.equals() 返回 false。这怎么可能 ?。如果有人知道可能出了什么问题,请帮忙?

Boz*_*zho 5

MD5 是一个byte[]. 它的表示通常是十六进制字符串。需要注意的事项:

  • 构造十六进制字符串的方式应该是相同的
  • 确保您没有使用new String(bytes). 这使用默认编码,该编码因机器而异,并且编码可能不支持某些字节值。
  • 字母应具有相同的大小写(小写/大写)

但你不应该比较代表性。您应该比较字节:Arrays.equals(ar1, ar2)

  • 是的,这很糟糕。它不产生十六进制。它根据默认编码生成一些东西。这可能正在改变。或者可能无法映射某些字节。 (2认同)