使用HTML5/JavaScript生成图像的MD5哈希值

5
使用 HTML5 文件 API 和任何 JavaScript 加密库,我该如何生成文件的 MD5 哈希值?
读取文件的方法如下:
var reader = new FileReader();

reader.onload = function(e) {
  var contents = e.target.result;
  // What goes here?
};

reader.readAsBinaryString(data.files[0]);
1个回答

5

这里需要放置:

var reader = new FileReader();

reader.onload = function(e) {
  var contents = e.target.result;
  // This goes here:
  var hash = CryptoJS.MD5(CryptoJS.enc.Latin1.parse(contents));
};

请确保您已包含CryptoJS库:

<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/md5.js"></script>

谢谢。这给了我一个哈希值,但它不是正确的哈希值(与Ruby、bash和在线JS哈希器相比)。 - Undistraction
你是否正在使用 reader.readAsBinaryString 来加载文件? - Maximillian Laumeister
是的,我正在使用 reader.readAsBinaryString(data.files[0]);(已添加到我的问题中)。我也尝试使用 reader.onloadend 作为回调函数。 - Undistraction
1
我刚刚做了更多的研究,发现这可能与字符串编码有关。请尝试我的编辑答案,其中添加了一个编码步骤。 - Maximillian Laumeister
CryptoJS.MD5() 返回一个对象,你需要调用它的 toString() 方法来获取 MD5 字符串。 - Aaron Cicali
确认它在今天能够正常工作,将其md5值与“md5”命令行工具的值进行比较,结果相同。 - Alex K

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接