Javascript AES 加密 [已关闭]
是否有可用于 Javascript 中 AES 256 位加密的库?
是否有可用于 Javascript 中 AES 256 位加密的库?
下面是一个使用 slowAES 的演示页面。
slowAES易于使用。逻辑设计。合理的OO包装。支持旋钮和杠杆,如IV和加密模式。与 .NET/C# 具有良好的兼容性。这个名字是开玩笑的;它被称为“慢速AES”,因为它没有在C++中实现。但在我的测试中,它并不是不切实际的缓慢。
它缺少欧洲央行模式。也缺少一个CTR模式,尽管我猜你可以很容易地在给定ECB模式的情况下构建一个。
它只专注于加密。一个很好的补充类,在Javascript中执行符合RFC2898的基于密码的密钥派生,可以从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 Rijndael 托管类的良好互操作。
编辑2:演示页面显示了如何从网页使用此AES加密。使用 .NET 中支持的相同输入(iv、键、模式等)可与 .NET Rijndael 类进行良好的互操作。您可以执行“查看源代码”以获取该页面的javascript。
EDIT3
是一个后期的补充:Javascript密码学被认为是有害的。值得一读。