有很多MD5 JavaScript实现。 有人知道哪一个是最先进的,修复最多的,最快的吗?
我需要它来做这个工具。
有很多MD5 JavaScript实现。 有人知道哪一个是最先进的,修复最多的,最快的吗?
我需要它来做这个工具。
当前回答
在这种情况下,我建议您使用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/
其他回答
令我烦恼的是,我找不到一个既快速又支持Unicode字符串的实现。
所以我做了一个支持Unicode字符串的实现,并且仍然比目前最快的ascii-only-strings实现更快(在编写时):
https://github.com/gorhill/yamd5.js
基于Joseph Myers的代码,但使用了TypedArrays,并进行了其他改进。
您还可以检查我的md5实现。应该是大约。和上面其他贴的一样。不幸的是,性能受到内环的限制,不可能进一步优化。
到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
目前最快的md5实现(基于Joseph Myers的代码):
https://github.com/iReal/FastMD5
jsPerf比较:http://jsperf.com/md5-shootout/63
为什么不试试http://phpjs.org/functions/md5/?
不幸的是,任何模拟脚本的性能都是有限的,但是这可以呈现真正的md5散列。尽管我建议不要使用md5作为密码,因为它是一个快速呈现的散列。