【问题标题】:Java MD5 which one of these is correct?Java MD5 其中哪一项是正确的?
【发布时间】:2010-02-09 16:36:46
【问题描述】:

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

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

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

提前致谢

编辑:

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

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

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

【问题讨论】:

  • 仅供参考:MD5 是 hash,而不是 cipher

标签: java algorithm authentication md5 sip


【解决方案1】:

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

Hex.encodeHexString(yourByteArray);

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

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

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

【讨论】:

【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-18
    相关资源
    最近更新 更多