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

我需要它来做这个工具。


当前回答

我找到了许多关于这个主题的文章。 他们都建议约瑟夫·迈耶斯实施。

在某些测试中,请参阅:http://jsperf.com/md5-shootout

在我对终极速度的追求中,我看了这段代码,我看到它可以改进。所以我基于Joseph Meyers代码创建了一个新的JS脚本。

参见改进的约瑟夫迈耶斯代码

其他回答

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

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

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

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

更快的哈希应该可以通过在显卡上计算(在WebGL中实现哈希算法),正如关于SHA256的讨论:是否有可能在浏览器中使用用户的视频卡来计算SHA256哈希值?使用WebGL还是Flash?

您还可以检查我的md5实现。应该是大约。和上面其他贴的一样。不幸的是,性能受到内环的限制,不可能进一步优化。

在这种情况下,我建议您使用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/

如果应用程序的性能受到MD5的Javascript实现的限制,那么您确实做错了什么。考虑架构变化(提示:减少使用MD5)