比较 MD5 字符串
我有一个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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
MD5 是一个
字节[]
。它的表示形式通常是一个十六进制字符串。需要注意的是:但您不应该比较表示形式。您应该比较字节:
Arrays.equals(ar1, ar2)
MD5 is a
byte[]
. It's representation is usually a hex-string. The things to look at:new String(bytes)
. This uses the default encoding, which varies across machines, and the encoding might not support some byte values.But you shouldn't compare the representation. You should compare the bytes:
Arrays.equals(ar1, ar2)