Java MD5 哪一项是正确的?
我正在尝试 SIP 注册,并且收到来自服务器的质询。
所以我需要对随机数使用 MD5 算法,然后将其发送到服务器进行身份验证。
我遇到过两个 MD5 加密示例,并且我都尝试过,每个示例都返回给我一个不同的字符串,所以我想知道哪一个是正确的?
提前致谢
编辑:
好的,感谢公共编解码器。
我已经对其进行了编辑,因为我必须使用我的用户名和密码对从服务器返回的随机数值进行编码才能将其发回。
所以它是 SIP 注册的一种特殊编码类型,任何人都可以指出如何执行此操作的教程吗?或者有什么提示吗?
I am trying to Sip Register and I get the challenge from the server.
So I need to use the MD5 algorithm on the nonce and then send that to the server to authenticate.
I have come across two examples of MD5 encryption and I have tried both and each one gives a different string back to me, so I was wondering which one is the correct one to use?
Thanks in advance
EDIT:
Ok thanks for the commons codecs.
I have edited it because I have to encode the nonce value I get back from the server with my username and password to send it back.
So it is a particuler type of encoding for SIP registration, can anyone point to a tutorial on how to do this? Or have any hints?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
两者都不正确。从字节数组到十六进制字符串的转换已损坏。我强烈建议使用 ASF 中的 http://commons.apache.org/codec/ ,它可以为你做这个:
但是如果你使用commons-codec,你也可以这样做:
然后你就完成了。很整洁,不是吗? :-)
Both are incorrect. Your conversion from the byte array to a hexadecimal string is broken. I highly recommend using http://commons.apache.org/codec/ from the ASF which can do this for you:
But if you're using commons-codec, you can also do this:
and you're done. Neat, isn't it? :-)
第一个的一个明显问题是您以错误的方式生成十六进制字符串。当
messageDigest
中的任何值小于 16 时,您将生成一个一位数的十六进制字符串(例如A
),而不是两位数的字符串(>0A
)。One obvious problem with the first one is that you produce the hex string the wrong way. When any value in
messageDigest
is less than 16, then you'll produce a single-digit hex string (for exampleA
) instead of a two-digit one (0A
).