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

时间:2013-07-05 02:01:30

标签: java javascript md5

我从javascript得到一个不同的哈希,然后我从java做...我希望有人可以解释并帮助纠正这个。

历史 我试图从移动应用程序连接到第三方..我不得不将他们的java api重写为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中的相同内容:8bd54f4d1c4800e3df9cdd2aee728ded

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

在javascript中我不能像java一样传递字节数组,但是字节值应该相同(尽管java将它们显示为unsigned)

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

1 个答案:

答案 0 :(得分:3)

终于搞定了!谢谢你们的帮助和评论。对于偶然发现这一点的其他人:最终在http://blog.faultylabs.com/?d=md5找到了一个MD5脚本,它允许我传入一个arraybuffer并解决它。

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

再次感谢。