Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MD5以下哪一项是正确的?_Java_Algorithm_Authentication_Md5_Sip - Fatal编程技术网

Java MD5以下哪一项是正确的?

Java MD5以下哪一项是正确的?,java,algorithm,authentication,md5,sip,Java,Algorithm,Authentication,Md5,Sip,我正在尝试Sip注册,我收到了来自服务器的挑战 所以我需要在nonce上使用MD5算法,然后将其发送到服务器进行身份验证 我遇到了两个MD5加密的示例,我尝试了这两个示例,每一个示例都给了我一个不同的字符串,所以我想知道哪一个是正确的 提前谢谢 编辑: 好的,谢谢你的公共编解码器 我编辑了它,因为我必须用我的用户名和密码对从服务器返回的nonce值进行编码才能将其发送回去 因此,它是SIP注册的一种特殊类型的编码,有人能指出如何做到这一点的教程吗?或者有什么提示吗?第一个的一个明显问题是生成十六

我正在尝试Sip注册,我收到了来自服务器的挑战

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

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

提前谢谢

编辑:

好的,谢谢你的公共编解码器

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


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

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

两者都不正确。从字节数组到十六进制字符串的转换已中断。我强烈建议您使用ASF,它可以为您做到这一点:

Hex.encodeHexString(yourByteArray);
但如果您使用的是commons编解码器,您也可以这样做:

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

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

仅供参考:MD5是一个散列,而不是密码。不过,不使用commons编解码器的最佳方式是什么?不确定公共编解码器的许可证Apache commons是根据Apache许可证进行许可的,该许可证不应造成任何损害。或者,如果您更喜欢没有法律的维基百科条目: