将图像的Javascript md5哈希与Java进行比较



我从javascript得到的哈希与从java得到的哈希不同。。。我希望有人能解释并帮助纠正这一点。

历史我正试图通过移动应用程序连接到第三方。。我不得不将他们的javaapi重写为javascript,这导致了一些翻译问题。其中一个问题是,他们期望一个图像的数据数组和该图像的md5哈希进行比较。在Java中,当我使用他们的代码时,我会得到与在javascript中做同样事情时不同的哈希。

在java中,代码:

byte[] decodedString = Base64.decode(testimg,  Base64.DEFAULT);
MessageDigest md = MessageDigest.getInstance("MD5");
md.reset();
md.update(decodedString);
byte[] array = md.digest();

创建一个散列:ad5e3cdf9174167243ded0e329a37cf6

javascript中的内容相同:8bd54f4d1c1C4800e3df9cdd2aee728ded

var decodedstr = window.atob(testimg);
var hashString = MD5(decodedstr);

在javascript中,我不能像java那样传递字节数组,但字节值应该相同(尽管java显示为无符号)

如何在javascript中更改我的图像数组以创建相同的哈希并仍然具有正确的图像?

终于拿到了!感谢大家的帮助和评论。对于其他偶然发现这一点的人:最终在以下位置找到了MD5脚本:http://blog.faultylabs.com/?d=md5这将允许我通过一个阵列缓冲区,并解决了它。

或者至少,给了我想要的结果,听起来javascript有更多的尝试和错误,因为一切都与其他语言有点不同。

再次感谢。

最新更新