有很多MD5 JavaScript实现。 有人知道哪一个是最先进的,修复最多的,最快的吗?
我需要它来做这个工具。
有很多MD5 JavaScript实现。 有人知道哪一个是最先进的,修复最多的,最快的吗?
我需要它来做这个工具。
当前回答
您还可以检查我的md5实现。应该是大约。和上面其他贴的一样。不幸的是,性能受到内环的限制,不可能进一步优化。
其他回答
我听说Joseph的Myers实现非常快。此外,他还有一篇关于Javascript优化的长篇文章,描述了他在编写实现时学到的东西。对于任何对性能javascript感兴趣的人来说,这是一本很好的读物。
http://www.webreference.com/programming/javascript/jkm3/
他的MD5实现可以在这里找到
令我烦恼的是,我找不到一个既快速又支持Unicode字符串的实现。
所以我做了一个支持Unicode字符串的实现,并且仍然比目前最快的ascii-only-strings实现更快(在编写时):
https://github.com/gorhill/yamd5.js
基于Joseph Myers的代码,但使用了TypedArrays,并进行了其他改进。
我找到了许多关于这个主题的文章。 他们都建议约瑟夫·迈耶斯实施。
在某些测试中,请参阅:http://jsperf.com/md5-shootout
在我对终极速度的追求中,我看了这段代码,我看到它可以改进。所以我基于Joseph Meyers代码创建了一个新的JS脚本。
参见改进的约瑟夫迈耶斯代码
我编写了测试来比较几种JavaScript哈希实现,包括这里提到的大多数MD5实现。 要运行测试,请访问http://brillout.github.io/test-javascript-hash-implementations/并稍等片刻。
似乎R. Hill的答案的YaMD5实现是最快的。
Node.js有内置的支持
const crypto = require('crypto')
crypto.createHash('md5').update('hello world').digest('hex')
上面的代码段为字符串hello world计算MD5十六进制字符串
这种解决方案的优点是不需要安装额外的库。
我认为内置解决方案应该是最快的。如果不是,我们应该为Node.js项目创建issue/PR。