Javascript AES加密

Javascript AES加密,javascript,encryption,aes,Javascript,Encryption,Aes,是否有Javascript中AES 256位加密的库?找到了几个示例。第一个弹出的对话框旨在解释算法并提供解决方案: 库可能会有所帮助。JSAES是JavaScript中AES的一个强大实现。 这里有一个使用slowAES的方法 很容易使用。设计合理。合理的OO包装。支持旋钮和杠杆,如IV和加密模式。与.NET/C兼容良好。这个名字是开玩笑的;它被称为“慢 AES”,因为它没有在C++中实现。但在我的测试中,它并不是不切实际的慢 它缺乏欧洲央行模式。也没有CTR模式,尽管我想如果有ECB模式,你

是否有Javascript中AES 256位加密的库?

找到了几个示例。第一个弹出的对话框旨在解释算法并提供解决方案:


库可能会有所帮助。

JSAES是JavaScript中AES的一个强大实现。

这里有一个使用slowAES的方法

很容易使用。设计合理。合理的OO包装。支持旋钮和杠杆,如IV和加密模式。与.NET/C兼容良好。这个名字是开玩笑的;它被称为“<强>慢<强> AES”,因为它没有在C++中实现。但在我的测试中,它并不是不切实际的慢

它缺乏欧洲央行模式。也没有CTR模式,尽管我想如果有ECB模式,你可以很容易地建立一个CTR模式

它只专注于加密。在Javascript中,有一个很好的补充类可以进行基于密码的密钥派生。这对库可以很好地与类似的.NET类配合使用。良好的互操作性。不过,与SlowAES相比,Javascript PBKDF2在生成键时明显比类慢

从技术上讲,有良好的互操作性并不奇怪,但对我来说,关键是SlowAES采用的模型熟悉且易于使用。我发现AES的其他一些Javascript库很难理解和使用。例如,在某些情况下,我找不到设置IV或模式(CBC、ECB等)的位置。事情并不是我所期望的那样。斯洛瓦不是这样的。酒店就在我期望的地方。这对我来说很容易理解,因为我熟悉Java和.NET加密编程模型

阿南达姆的PBKDF2并不完全在这个水平上。它只支持对DeriveBytes函数的一次调用,因此,如果您需要从密码派生密钥和IV,此库将无法工作,保持不变。稍微修改一下,就可以了

编辑:我将打包和修改后的Anandam版本整合到Windows脚本组件中。将此AES与密码派生密钥一起使用可显示与.NET RijndaelManaged类的良好互操作性

EDIT2:显示如何从网页使用此AES加密。使用.NET中支持的相同输入(iv、键、模式等),可以与.NET Rijndael类进行良好的互操作。您可以通过“查看源代码”获取该页面的javascript

EDIT3

最新添加:值得一读。

在我搜索AES加密的过程中,我从斯坦福德的一些学生那里找到了这个。声称是最快的。支持CCM、OCB、GCM和块加密。

最近,我需要在javascript和python之间执行一些加密/解密互操作性

具体地说

1) 使用AES在javascript中加密并在python中解密(谷歌应用程序引擎) 2) 使用RSA在javascript中加密,在python中解密(Google App Engine) 3) 使用pycrypto

我发现很多不同版本的RSA和AES在网络上到处流传 它们的方法都不同,但我没有找到端到端javascript和python互操作性的好例子

经过反复试验,我终于拼凑出了适合我需要的东西

无论如何,我找到了一个js/webapp与google app engine托管的python服务器对话的例子,该服务器使用AES、公钥和私钥RSA之类的东西

我想我会通过链接将它包括在这里,以防它对其他需要完成同样任务的人有一些用处

请参见rsa aes演示网站appspot.com上的演示

编辑:查看浏览器控制台输出并查看源代码,以获取有关演示中发生的事情的提示和有用消息

编辑:更新了非常旧且已失效的指向源的链接,现在指向


如果您试图使用javascript来避免使用SSL,请三思。有许多折衷措施,但只有SSL提供安全通信。Javascript加密库可以帮助抵御某些攻击,但不是真正的中间人攻击

下面的文章解释了如何尝试使用javascript创建安全通信,以及如何出错:


注意:如果您正在自定义域上查找google app engine的SSL,请查看。

这篇文章现在已经很老了,但是,现在可能是最完整的javascript加密库

是用JavaScript实现的加密算法的集合。 它包括以下密码:AES-128、AES-192、AES-256、DES、Triple-DES、Rabbit、RC4、RC4Drop和哈希器:MD5、RIPEMD-160、SHA-1、SHA-256、SHA-512、SHA-3,具有224、256、384或512位

您可能需要查看它们的端口,这也是以下node.js端口的参考


是的node.js端口

还有一个斯坦福免费库作为Cryptojs的替代品


另一个支持AES-256的解决方案:

这里是唯一适合我的解决方案:


它非常基本,但使用简单,而且似乎运行良好。

根据我自己的经验,它在JavaScript中提供了最快的AES实现(特别是在Firefox中,因为它可以充分利用asm.js)

自述文件:

编辑:现在是,如果您关心性能,应该将其作为主要解决方案。请注意,IE11实施了该标准的早期草案版本,其中未使用承诺

以下是一些例子:

试试看——它真的很快

附言:我是一名作家,我可以回答你的任何问题。 我也很高兴得到一些反馈:)

使用CryptoJS

代码如下:

下面是一个在线工作示例:

我不知道如何设置
Chrome/31.0
SHA256: 51 MiB/s (9 times faster than SJCL and CryptoJS)
AES-CBC: 47 MiB/s (13 times faster than CryptoJS and 20 times faster than SJCL)

Firefox/26.0
SHA256: 144 MiB/s (5 times faster than CryptoJS and 20 times faster than SJCL)
AES-CBC: 81 MiB/s (3 times faster than CryptoJS and 8 times faster than SJCL)