比较 MD5 字符串

发布于 2024-12-12 00:28:09 字数 183 浏览 0 评论 0原文

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

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

I have a java code where I am sending an md5 has over the socket to receive on the other side. I take in a password as the input and create its own md5 to check with the md5 recieved over the socket to authenticate.

Both the md5 strings have the same byte pattern, but the String.equals() returns a false when I do an equality test on both the md5 patterns. How can this be possible ?. Please help if anyone has an idea of what might be wrong ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

只有影子陪我不离不弃 2024-12-19 00:28:09

MD5 是一个字节[]。它的表示形式通常是一个十六进制字符串。需要注意的是:

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

但您不应该比较表示形式。您应该比较字节:Arrays.equals(ar1, ar2)

MD5 is a byte[]. It's representation is usually a hex-string. The things to look at:

  • the way you construct the hex string should be the same
  • make sure you are not using new String(bytes). This uses the default encoding, which varies across machines, and the encoding might not support some byte values.
  • the letters should have the same case (lower/upper)

But you shouldn't compare the representation. You should compare the bytes: Arrays.equals(ar1, ar2)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文