是否有可用于 Javascript 中的 AES 256 位加密的库?
Javascript AES 加密
JSAES 是 JavaScript 中 AES 的强大实现。 http://point-at-infinity.org/jsaes/
这是使用slowAES的演示页面。
slowAES很容易使用。逻辑设计。合理的OO包装。支持旋钮和控制杆,如 IV 和加密模式。与 .NET/C# 的良好兼容性。这个名字是半开玩笑的;它被称为“慢AES”,因为它不是在 C++ 中实现的。但在我的测试中,它并不是不切实际的慢。
它缺乏欧洲央行模式。也缺乏 CTR 模式,虽然你可以很容易地建立一个 ECB 模式,我猜。
它只专注于加密。,做了很好的互补类RFC2898兼容的基于口令的密钥导出,在Javascript中,是可以从Anandam。这对库适用于类似的 .NET 类。良好的互操作性。但是,与 SlowAES 相比,Javascript PBKDF2在生成密钥时明显慢于Rfc2898DeriveBytes类。
技术上有良好的互操作性并不奇怪,但对我来说,关键点是 SlowAES 采用的模型熟悉且易于使用。我发现 AES 的其他一些 Javascript 库很难理解和使用。例如,在其中一些中,我找不到设置 IV 或模式的位置(CBC、ECB 等)。事情不是我预期的那样。SlowAES 不是那样的。这些属性就在我预期的位置。熟悉 Java 和 .NET 加密编程模型后,我很容易上手。
Anandam 的 PBKDF2 还没有达到那个水平。它仅支持对 DeriveBytes 函数的单次调用,因此如果您需要从密码中派生出密钥和 IV,则该库将无法正常工作,保持不变。一些轻微的修改,它为此目的工作得很好。
编辑:我将一个将SlowAES和 Anandam 的PBKDF2的修改版本打包到 Windows 脚本组件中的示例放在一起。将此 AES 与密码派生密钥一起使用显示了与 .NET RijndaelManaged 类的良好互操作。
EDIT2:演示页面显示了如何从网页使用此 AES 加密。使用 .NET 中支持的相同输入(iv、键、模式等)可为您提供与 .NET Rijndael 类的良好互操作。您可以执行“查看源代码”来获取该页面的 javascript。
EDIT3
后期补充:Javascript Cryptography 被认为是有害的。值得一读。
在我搜索 AES 加密时,我从一些斯坦福学生那里发现了这个。声称在那里最快。支持 CCM、OCB、GCM 和块加密。 http://crypto.stanford.edu/sjcl/
谷歌搜索“JavaScript AES”找到了几个例子。弹出的第一个旨在解释算法并提供解决方案:
这篇文章现在已经很旧了,但是crypto-js可能是现在最完整的 javascript 加密库。
CryptoJS是用 JavaScript 实现的加密算法的集合。它包括以下密码:AES-128、AES-192、AES-256、DES、三重 DES、Rabbit、RC4、RC4Drop 和哈希:MD5、RIPEMD-160、SHA-1、SHA-256、SHA-512、SHA -3 具有 224、256、384 或 512 位。
您可能想查看他们的快速入门指南,这也是以下 node.js 端口的参考。
node-cryptojs-aes是crypto-js的 node.js 端口