我有一个java代码,我发送的md5已经通过套接字在另一端接收。我输入一个密码作为输入并创建自己的md5来检查通过套接字收到的md5进行身份验证。
两个md5字符串都具有相同的字节模式,但是当我对两个md5模式进行相等性测试时,String.equals()返回false。这怎么可能 ?。如果有人知道可能出错的地方,请帮忙吗?
答案 0 :(得分:4)
MD5是byte[]
。它的表示通常是一个十六进制字符串。需要注意的事项:
new String(bytes)
。这使用默认编码,该编码因机器而异,编码可能不支持某些字节值。但你不应该比较表示。您应该比较字节:Arrays.equals(ar1, ar2)