如何使用CryptoJS计算blob的md5校验和

How to calculate md5 checksum of blob using CryptoJS

本文关键字:md5 校验和 blob 计算 何使用 CryptoJS      更新时间:2023-09-26

使用Blob API以块的形式上传文件。在这里,我想检查blob的md5校验和。当我尝试下面的代码时,它对文本文件运行良好,但对二进制文件返回不同的值。

var reader = new FileReader();
reader.readAsBinaryString(blob);
reader.onloadend = function () {
    var mdsum = CryptoJS.MD5(reader.result);
    console.log("MD5 Checksum",mdsum.toString());
};

如何为所有类型的文件正确计算blob的md5校验和?

使用以下代码创建正确的md5哈希:

  function calculateMd5(blob, callback) {
    var reader = new FileReader();
    reader.readAsArrayBuffer(blob);
    reader.onloadend = function () {
      var wordArray = CryptoJS.lib.WordArray.create(reader.result),
          hash = CryptoJS.MD5(wordArray).toString();
      // or CryptoJS.SHA256(wordArray).toString(); for SHA-2
      console.log("MD5 Checksum", hash);
      callback(hash);
    };
  }

更新(简单一点):

 function calculateMd5(blob, callback) {
    var reader = new FileReader();
    reader.readAsBinaryString(blob);
    reader.onloadend = function () {
      var  hash = CryptoJS.MD5(reader.result).toString();
      // or CryptoJS.SHA256(reader.result).toString(); for SHA-2
      console.log("MD5 Checksum", hash);
      callback(hash);
    };
  }

请确保包括CryptoJS库中的core.jslib-typedarrays.js重要)和md5.js组件
请参阅此fiddle以获得完整的示例(由于源访问控制,它在fiddle上不起作用,请在本地服务器上尝试)。