我正在尝试保护用户在一系列记录卡上提交的数据。加密/解密将(希望)在浏览器中进行,因此用户可以控制尽可能多的安全过程。
我发现了一个很棒的 AES 库(https://github.com/mdp/gibberish-aes)。不幸的是,我依赖用户来创建加密 key ,所以我想要一个慢得多的算法。有很多哈希库(例如 PHP 的 PHPPass),但我需要一些双向的东西。
我也对其他想法持开放态度。我只需要找到解决方案。
最佳答案
您将加密算法与 key derivation 混淆了。您不希望加密算法变慢,因为 AES 不会面临使用正确 key 进行暴力破解的风险。
大概既然你说“用户创建加密 key ”,你的意思是这是一个使用密码作为 key 的方案? PBKDF2是推荐的方法,并得到 NIST in SP800-132 的批准。
既然你有这个标记的Javascript,它看起来像 crypto-js支持PBKDF2
当您从用户那里获得密码/密码短语时,您需要生成盐并从 PBKDF2 派生实际的 AES key 。它不需要是双向的,因为相同的输入(密码、盐和轮数)将始终生成相同的 key 。
请注意,这也不是一个设计正确的密码系统。如果没有 CBC or CTR mode,则不应使用 AES ,并且您仍然需要 MAC 您的数据(或使用 GCM ,这将处理两者)。
关于javascript - 寻求慢速加密/解密方法或库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13690820/