我有一个java代码,我发送的md5已经通过套接字在另一端接收。我输入一个密码作为输入,并创建它自己的md5来检查通过套接字接收的md5进行身份验证。比较MD5字符串
这两个md5字符串都有相同的字节模式,但是当我对两个md5模式进行相等性测试时,String.equals()返回false。这怎么可能 ?。如果有人知道什么可能是错误的,请帮助。
我有一个java代码,我发送的md5已经通过套接字在另一端接收。我输入一个密码作为输入,并创建它自己的md5来检查通过套接字接收的md5进行身份验证。比较MD5字符串
这两个md5字符串都有相同的字节模式,但是当我对两个md5模式进行相等性测试时,String.equals()返回false。这怎么可能 ?。如果有人知道什么可能是错误的,请帮助。
MD5是byte[]
。它的表示是通常是一个十六进制字符串。事情查看:
new String(bytes)
的方式。这使用默认的编码,这在机器间是不同的,编码可能不支持一些字节值。但你不应该比较代表性。您应该比较字节:Arrays.equals(ar1, ar2)
请显示一些代码。 – chzbrgla
你能澄清你的意思吗“两个md5字符串都有相同的字节模式”?你如何确定这一点? –
你真的在使用'String.equals()',而不是,例如调用'char []。equals()'? –