有很多MD5 JavaScript实现。 有人知道哪一个是最先进的,修复最多的,最快的吗?

我需要它来做这个工具。


当前回答

我编写了测试来比较几种JavaScript哈希实现,包括这里提到的大多数MD5实现。 要运行测试,请访问http://brillout.github.io/test-javascript-hash-implementations/并稍等片刻。

似乎R. Hill的答案的YaMD5实现是最快的。

其他回答

令我烦恼的是,我找不到一个既快速又支持Unicode字符串的实现。

所以我做了一个支持Unicode字符串的实现,并且仍然比目前最快的ascii-only-strings实现更快(在编写时):

https://github.com/gorhill/yamd5.js

基于Joseph Myers的代码,但使用了TypedArrays,并进行了其他改进。

也许这个包是有用的 https://www.npmjs.com/package/pure-md5

console.time('latin'); 常量拉丁语 = MD5('你好'); console.timeEnd('latin'); console.log('Привет: ', md5('Привет')); console.log('嘿: ', md5('嘿')); <script src=“https://unpkg.com/pure-md5@latest/lib/index.js”></script>

js-md5支持UTF-8字符串,数组,ArrayBuffer, AMD....

和快速。jsperf

在这种情况下,我建议您使用CryptoJS。

基本上,CryptoJS是一个使用最佳实践和模式在JavaScript中实现的标准和安全加密算法的不断增长的集合。它们速度快,界面一致且简单。

因此,如果你想计算密码字符串的MD5哈希值,那么按照以下步骤进行:

<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/core.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/md5.js"></script>
<script>
    var passhash = CryptoJS.MD5(password).toString();

    $.post(
      'includes/login.php', 
      { user: username, pass: passhash },
      onLogin, 
      'json' );
</script>

因此,这个脚本将把密码字符串的散列发布到服务器。

有关其他哈希计算算法的进一步信息和支持,您可以访问:

http://code.google.com/p/crypto-js/

到2020年,最快的MD5实现可能是用WASM (Web Assembly)编写的。

hash- WASM是一个在WASM中实现MD5哈希的库。

您可以在这里找到基准测试。

你可以用npm安装它:

npm i hash-wasm

或者只是添加一个脚本标记

<script src="https://cdn.jsdelivr.net/npm/hash-wasm"></script>

然后使用hashwasm全局变量。

例子:

async function run() {
  console.log('MD5:', await hashwasm.md5('The quick brown fox jumps over the lazy dog'));
}

run();

输出

MD5: 9e107d9d372bb6826bd81d3542a419d6