1

我从 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 将这些显示为无符号)

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

4

1 回答 1

3

终于明白了!谢谢你们的帮助和评论。对于其他偶然发现此问题的人:最终在http://blog.faultylabs.com/?d=md5找到了一个 MD5 脚本,它允许我传入一个数组缓冲区并解决它。

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

再次感谢。

于 2013-07-06T00:22:11.340 回答