我正在尝试Sip Register,我从服务器接受了挑战。
所以我需要在nonce上使用MD5算法,然后将其发送到服务器进行身份验证。
我遇到过两个MD5加密的例子,我已经尝试了两个,每个都给我一个不同的字符串,所以我想知道哪一个是正确的?
提前致谢
编辑:
好的,感谢公共编解码器。
我已经编辑了它,因为我必须使用我的用户名和密码对从服务器返回的nonce值进行编码以将其发回。
因此,它是SIP注册的特定类型的编码,任何人都可以指向如何执行此操作的教程吗?或者有任何提示?
答案 0 :(得分:2)
两者都不正确。您从字节数组到十六进制字符串的转换被破坏。我强烈建议您使用ASF中的http://commons.apache.org/codec/,它可以为您执行此操作:
Hex.encodeHexString(yourByteArray);
但是如果你使用commons-codec,你也可以这样做:
String sessionid = "1ddfdf99abfe5690dc1243875";
String md5HexString = DigestUtils.md5Hex(sessionid);
你已经完成了。整洁,不是吗? : - )
答案 1 :(得分:1)
第一个问题的一个明显问题是你以错误的方式产生十六进制字符串。当messageDigest
中的任何值小于16时,您将生成一位数的十六进制字符串(例如A
)而不是两位数的字符串(0A
)。< / p>