我脑海里有一些东西在告诉我,我在这里忽略了一些显而易见的东西。
我正在将一个现有的Java项目与一个使用API密钥的MD5哈希进行身份验证的第三方API集成。但是它对我不起作用,在调试期间,我意识到我生成的散列与他们提供的示例不匹配。我找到了一些网站,可以从字符串中创建MD5哈希以检查他们的示例,据我所知,我是错误的,他们是正确的。
例如,根据此网站,字符串“hello”生成哈希值“5d41402abc4b2a76b9719d911017c592”。(顺便说一句,除了它似乎可以正确地散列我拥有的示例之外,我对这个网站一无所知)。当我运行我的代码时,我得到:
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());
}
上周我使用了非常相似的方法成功地验证了另一个API,该API使用SHA1算法。我在想这个问题是否与org.apache.commons.net.util.Base64.encodeBase64String有关... 如能提供任何帮助将不胜感激,即使只是对byteArray进行测试以确定是否正确,但转换后的字符串是错误的。