Javascript AES加密

cod*_*der 108 javascript encryption aes

在Javascript中是否有可用于AES 256位加密的库?

bac*_*h17 65

JSAES是JavaScript中AES的强大实现. http://point-at-infinity.org/jsaes/

  • JSAES是根据GNU GPL许可的 - 因此它不适用于某些项目. (30认同)
  • 现在这非常有用并且功能丰富http://code.google.com/p/crypto-js/ (11认同)
  • 这是"免费使用",但如果您想在GPL之外的其他内容下发布您的产品,则无法使用它. (4认同)
  • **JSAES**是一个很好的起点,但它只能用于加密16个字节的数据.如果您想加密更大的数据块,您必须自己扩展它以实现初始化向量,加密模式(CBC或其他...),填充. (3认同)
  • @HappyDeveloper嗯,没有.不要责怪这个许可证.作者选择了错误的许可证,因为GPL不适合图书馆. (2认同)

Che*_*eso 35

这是一个使用slowAES 的演示页面.

slowAES很容易使用.逻辑设计.合理的OO包装.支持IV和加密模式等旋钮和控制杆.与.NET/C#的良好兼容性.这个名字是诙谐的; 它被称为" 慢速 AES",因为它没有在C++中实现.但在我的测试中,这并非不切实际.

它缺乏ECB模式.我猜也是缺少点击率模式,虽然你可以很容易地建立一个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被认为是有害的.值得一读.

  • +1 [JavaScript密码学被认为有害]的代码为(http://www.matasano.com/articles/javascript-cryptography/) (8认同)
  • 关于edit3链接,它是一篇文章的废话...它的一半陈述是完全错误的! (8认同)
  • 可以通过让用户移动鼠标并输入密钥作为真正的随机生成器来解决随机密钥问题. (2认同)
  • 显示页面的链接似乎已损坏. (2认同)

Dan*_*y C 25

在我搜索AES加密时,我从一些斯坦福大学的学生那里找到了这个.声称是最快的.支持CCM,OCB,GCM和块加密. http://crypto.stanford.edu/sjcl/

  • 文档缺乏,而且很难使用.你如何改变密钥长度?我在文档周围搜寻,无法在合理的时间内弄明白.此外,当您加密某些内容时,您会获得一系列返回的键值对,但文档似乎并未对此进行解释.我最终使用了可移动类型库. (5认同)

Sam*_*war 12

谷歌搜索"JavaScript AES"已经找到了几个例子.弹出的第一个用于解释算法并提供解决方案:

可移动类型脚本:AES


mar*_*rcz 11

这篇文章现在已经过时了,但是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-aescrypto-js的node.js端口


Dav*_*ans 8

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

特别...

1)使用AES加密javascript并在python中解密(Google App Engine)2)使用RSA加密javascript并在python中解密(Google App Engine)3)使用pycrypto

我发现很多不同版本的RSA和AES在网络上浮动,他们的方法各不相同,但我没有找到端到端javascript和python互操作性的好例子.

最终,经过大量的试验和错误,我设法凑齐了一些适合我需求的东西.

无论如何,我打破了一个js/webapp与谷歌应用程序引擎托管的python服务器谈话的例子,该服务器使用AES和公钥以及私钥RSA.

我虽然通过链接将它包含在这里,以防它对某些需要完成同样事情的人有用.

http://www.ipowow.com/files/aesrsademo.tar.gz

并在rsa-aes-demo DOT appspot DOT com上看到演示

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

编辑:更新非常旧和已解散的源链接到现在指向

https://sestertii.com/files/aesrsademo.tar.gz

  • 链接……没有找到! (2认同)

Joe*_*ard 7

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

从自述文件:

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)
Run Code Online (Sandbox Code Playgroud)

编辑:网页加密API现在大多数浏览器中实现,如果你关心性能应作为首要的解决方案.请注意,IE11实现了该标准的早期草案版本,该版本未使用promises.

可以在这里找到一些例子:


Ode*_*ner 5

使用CryptoJS

这是代码:https : //github.com/odedhb/AES-encrypt

这是一个在线工作示例:https : //odedhb.github.io/AES-encrypt/