1

我正在尝试 Sip Register,但我收到了来自服务器的挑战。

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

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

提前致谢

编辑:

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

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

所以它是 SIP 注册的一种特殊编码类型,任何人都可以指出如何做到这一点的教程吗?或者有什么提示?

4

2 回答 2

2

两者都不正确。您从字节数组到十六进制字符串的转换被破坏了。我强烈建议使用ASF 中的http://commons.apache.org/codec/ ,它可以为您做到这一点:

Hex.encodeHexString(yourByteArray);

但如果你使用的是 commons-codec,你也可以这样做:

String sessionid = "1ddfdf99abfe5690dc1243875";
String md5HexString = DigestUtils.md5Hex(sessionid);

你就完成了。整洁,不是吗?:-)

于 2010-02-09T16:48:39.660 回答
1

第一个问题的一个明显问题是您以错误的方式生成十六进制字符串。当 in 中的任何值messageDigest小于 16 时,您将生成一位十六进制字符串(例如A),而不是两位数的一 ( 0A)。

于 2010-02-09T16:45:34.577 回答