我从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中更改我的图像数组以创建相同的哈希并且仍然具有正确的图像?
答案 0 :(得分:3)
终于搞定了!谢谢你们的帮助和评论。对于偶然发现这一点的其他人:最终在http://blog.faultylabs.com/?d=md5找到了一个MD5脚本,它允许我传入一个arraybuffer并解决它。
或者至少,给了我想要的结果,听起来像javascript有更多的试验和错误,因为一切都处理与其他语言有点不同。
再次感谢。