Javascript 寻找慢速加密/解密方法或库

Javascript 寻找慢速加密/解密方法或库,javascript,encryption,Javascript,Encryption,我试图保护用户在一系列记事卡上提交的数据。加密/解密(希望)将在浏览器中进行,因此用户可以控制尽可能多的安全过程 我发现了一个AES图书馆(https://github.com/mdp/gibberish-aes)太棒了。不幸的是,我依靠用户来创建加密密钥,所以我想要一个慢得多的算法。有很多散列库(比如phppassforphp),但我需要一些双向的东西 我也愿意接受其他想法。我只需要找到一个解决方案。你把加密算法和。您不希望您的加密算法很慢,因为AES不会面临使用正确密钥进行暴力强制的风险 大

我试图保护用户在一系列记事卡上提交的数据。加密/解密(希望)将在浏览器中进行,因此用户可以控制尽可能多的安全过程

我发现了一个AES图书馆(https://github.com/mdp/gibberish-aes)太棒了。不幸的是,我依靠用户来创建加密密钥,所以我想要一个慢得多的算法。有很多散列库(比如phppassforphp),但我需要一些双向的东西


我也愿意接受其他想法。我只需要找到一个解决方案。

你把加密算法和。您不希望您的加密算法很慢,因为AES不会面临使用正确密钥进行暴力强制的风险

大概因为你说“用户创建加密密钥”,你的意思是这是一个使用密码作为密钥的方案?是推荐的方法,并由

因为您有这个标记的Javascript,所以它看起来支持PBKDF2

当您从用户那里获得密码/密码短语时,您需要生成一个salt并从PBKDF2派生出实际的AES密钥。它不需要是双向的,因为相同的输入(密码、salt和轮数)将始终生成相同的密钥


请注意,即使这不是一个设计合理的密码系统。如果没有AES,您不应该使用AES,并且您仍然需要对数据进行MAC(或者使用,这两种方式都可以处理)

他们不能在加密开始之前创建加密密钥吗,或者我误解了您对缓慢加密的期望?如果这与此无关,很抱歉,但是您看过了吗?看起来它有很多不错的选择。我不知道你为什么要慢一点。。。如果你真的想要“慢”的话,可以使用setTimeout或其他方法来增加延迟?为什么你想要一个更慢的算法?@jbabey一般来说,这样可以将暴力攻击的速度降低到不可行的程度。尽管我发现很难想象这种假设采用最先进的加密技术的用例。@delnan:这不是算法,而是密钥派生函数。你是对的,蛮力并不是AES真正关心的问题,但是你可以增加密码->键步骤的难度。哇,我将不得不查找其中的一些。将使用CBC。攻击者难道不知道salt/hash算法,从而使该部分变得毫无意义吗?你能看看我发布的github项目,让我知道它是如何叠加的吗?另外,crypto js看起来非常好。我只是想了解关键的推导过程以及它有什么风险。标记了JS,因为我想对客户端进行解密/加密以帮助提高安全性。抱歉,我只提供了指向所有内容的链接:)。安全性并不真正取决于算法或salt的保密性。PBKDF2真正做的就是获取一个密码,应用数千次散列,并将其用作密钥。如果有人想使用暴力,他们必须对每一个密码进行几千次哈希运算,这大大降低了速度。salt只是让这个过程变得独特,所以如果你和我都使用“password”作为密码,但是不同的salt,我们会得到不同的密钥。这可以防止攻击者预先计算巨大的列表(彩虹表)。在Javascript中进行客户端加密时,还需要采取许多其他预防措施。请参阅文章“Javascript加密被认为是有害的”,以了解警告()。太棒了。因此,这其中的“慢”部分是密钥创建,而不是加密/解密。这就是减缓暴力的原因。因此,仍然需要强密码。我会查一下你链接的那篇文章。非常感谢你。