4

我的应用程序中有很多短字符串要解密,解密速度至关重要。

目前我正在尝试,RNCryptor但发现它的默认设置对于我的用例来说有点慢。否则它是一个很棒的框架:-)

加密只会进行一次,因此其性能并不重要。

我很好地放弃了速度保护,因为我只想有一个非常基本的加密。

您建议使用哪些RNCryptor设置来加密和解密以实现最快的解密性能?一个简短的代码示例会很棒!

同样,我对当前用例的非常基本的加密保护很好。

4

2 回答 2

7

RNCryptor 的大部分时间都在调用 PBKDF2。它迭代 20,000 次(每个键 10,000 次)。虽然在即将推出的 RNCryptor 版本中它可能会变得更快,但基于密码的加密总是很慢。这是一项安全功能;故意很慢。它的设计速度很慢,可以让攻击者感到沮丧,同时对最常见的用例产生可接受的影响。

通过使用基于密钥而不是基于密码的方法,您可以显着提高性能。基于键的方法没有注入减速。如果可能的话,这将是我推荐的方法。生成两个随机的 256 位密钥,而不是使用密码。

您可以将 PBKDF2 迭代的数量设置为较小的数量(例如,在处理 JavaScript 时这是必需的),但是您生成密钥的速度越快,您的安全性就越差。

有多种方法可以修改格式以提高用例的性能,但很容易将其搞砸并严重损害安全性。正如@Zaph 所说,在修改任何安全框架之前,我要么进行大量研究,要么聘请专家。

于 2014-01-08T20:10:05.157 回答
4

你能做的不多,RNCryptor也不慢。

AES128 会比 AES256 快一点——或者不取决于平台。

设置成本很高,因此这是一个可能使事情变得更快的地方。一种可能性是组合字符串。

如果您可以使所有字符串成为块大小的倍数,您可以使用一种设置、ECB 模式和部分 CCryptor 函数。请注意,ECB 模式会降低安全性,尤其是在短字符串上。CCCryptorCreate()使用 .的短填充字符串进行设置和解密CCCryptorUpdate()

要考虑的另一件事是TinyCrypt。“TinyCrypt 的第一点是非常快速地压缩和加密你的文件。” 除了 AES,我很少建议使用非主流密码充其量是狡猾的——但您表示您愿意以安全性换取速度。

于 2013-11-23T12:19:55.703 回答