Java MD5其中一个是正确的吗?

时间:2010-02-09 16:36:46

标签: java algorithm authentication md5 sip

我正在尝试Sip Register,我从服务器接受了挑战。

所以我需要在nonce上使用MD5算法,然后将其发送到服务器进行身份验证。

我遇到过两个MD5加密的例子,我已经尝试了两个,每个都给我一个不同的字符串,所以我想知道哪一个是正确的?

提前致谢

编辑:

好的,感谢公共编解码器。

我已经编辑了它,因为我必须使用我的用户名和密码对从服务器返回的nonce值进行编码以将其发回。

因此,它是SIP注册的特定类型的编码,任何人都可以指向如何执行此操作的教程吗?或者有任何提示?

2 个答案:

答案 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>