如何在JavaScript/Node.js中生成MD5文件哈希?

115
如何使用Javascript/Node.js生成MD5哈希?我已经有一个名为fileVideo的缓冲区,并且我需要为该字符串生成一个MD5哈希。
var fr = new FileReader();      
fr.onload = function(e) {            
    string md5 = functionToGenerateMD5hash(e.target.result);
    // send md5 here
};       
fr.readAsArrayBuffer(fileVideo);

1
这是一个stackoverflow的例子:https://dev59.com/y3RA5IYBdhLWcg3w9ivq - Jonathon Cwik
有什么例子吗?我找不到如何使用js获取文件的md5哈希值的示例。 - Taras Kravets
对于在2022年或之后阅读此内容的任何人,只需使用浏览器标准API转到真正的答案:https://dev59.com/z2Uq5IYBdhLWcg3wKtRL#53490958/ - Ahmed Fasih
验证 MD5 结果:verify - cwtuan
12个回答

-1
你可以使用一个轻量级的库pure-md5。只有4.7kb。

$("#file-dialog").change(function() {
  handleFiles(this.files);
});

function handleFiles(files) {
  for (var index = 0; index < files.length; index++) {
    var file = files[index];
    var fileReader = new FileReader();
    fileReader.onload = function(e) {
      $('body').append(`
        <div style="margin-top: 2rem;">
          <span>${file.name}: </span>
          <span>${(md5(e.target.result))}</span>
        </div>
      `);
    }

    fileReader.readAsText(file, 'utf-8');
  }

}
body {
  font-family: sans-serif;
}
<script src="https://unpkg.com/pure-md5@0.1.9/lib/index.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="file" id="file-dialog" multiple="true" accept="image/*">


-2

您可以使用crypto-js。

要使用crypto-js,您需要加载core.js和md5.js。

这里有一些URL列表https://cdnjs.com/libraries/crypto-js

cryptojs也可以在此处以zip形式获得https://code.google.com/archive/p/crypto-js/downloads

2013年回答者'amal'有一个类似的答案,但是a)他的md5.js链接不再起作用b)他没有先加载必要的core.js。

<html>    
  <head> 

    <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/components/core.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/md5.js"></script>

  <script>
     var hash = CryptoJS.MD5("Message");
     console.log(hash);
  </script>

  </head>
  <body>

  </body>
</html>

我应该真的包含获取文件的代码..我知道它在某个地方,我计划添加它。此外,请记住,即使这样,它只能获取从http请求返回的文件,这通常是缓存文件。(尽管在某些Web浏览器中,您可以告诉它们禁用缓存..在Chrome中,检查器中的一个简单勾选框,当然大多数用户不会勾选) - barlop

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