【发布时间】:2015-12-13 03:14:46
【问题描述】:
我的问题是这个 for 循环需要很长时间才能完成。 我想要一个更快的方法来完成它。
ArrayList arrayList = new ArrayList();
byte[] encryptedBytes = null;
for (int i = 0; i < iterations; i++)
{
encryptedBytes = Convert.FromBase64String(inputString.Substring(base64BlockSize * i,
base64BlockSize));
arrayList.AddRange(rsaCryptoServiceProvider.Decrypt(encryptedBytes, true));
}
iterations 变量有时会大于 100,000,而且会一直如此。
【问题讨论】:
-
RSA(非对称)加密比对称(例如:AES)加密慢得多,使用对称加密数据,非对称加密对称密钥。
-
这不是办法。而是创建一个对称密钥,使用对称算法加密数据,如果需要,使用 RSA 加密对称密钥。这基本上就是 https 的工作原理。如果您不需要非对称加密(公钥/私钥对),请不要使用它。
-
解密应该很慢,否则容易受到基于时间的攻击。
-
找一个更好的导师,导师不应该教没有在实践中使用的方法。
-
@MohemmadAlBughdadi 如果您不愿意接受建议,为什么要问这个问题?在不改变其内部逻辑的情况下,真的没有其他方法可以加速 for 循环。
标签: c# performance for-loop encryption