我脑海中的某个东西告诉我我错过了一些明显的东西。MessageDigest MD5算法没有返回我期望的结果
我正在使用api密钥的md5哈希进行身份验证的第三方API集成了现有的Java项目。它不适合我,在调试过程中,我意识到我生成的哈希表与他们提供的示例不匹配。我发现一些网站可以通过字符串创建MD5哈希来检查他们的例子,并且据我所知,我错了,他们是对的。
例如,根据this website,字符串“hello”生成“5d41402abc4b2a76b9719d911017c592”的散列。 (FWIW我对这个网站一无所知,只是它似乎正确地散列了我所拥有的例子)。当我通过我的代码运行它,我得到:
XUFAKrxLKna5cZ2REBfFkg ==
下面是一个简单的方法,我用生成MD5哈希/串:
private String md5(String md5Me) throws Exception {
MessageDigest md = MessageDigest.getInstance("MD5");
md.reset();
md.update(md5Me.getBytes("UTF-8"));
return Base64.encodeBase64String(md.digest());
}
我用了一个很类似的方法可以在上周使用SHA1算法成功验证不同的API。我想知道如果问题是相关的org.apache.commons.net.util.Base64.encodeBase64String ...任何帮助非常感谢,如果只有一些测试,看看如果byteArray是正确的,但转换的字符串是错误的。
md.digest()应该包含您正在查找的字节,您使用Base64算法进一步对它们进行编码并获得不同的结果 – hoaz
我需要将这些字节转换为http请求的字符串,是否有更好的方法可以做到这一点? – eric
新的字符串(字节[]字节) – Andy