.NET RSA加密:最小密钥大小?

Mui*_*uis 1 .net encryption rsa key

我可以在.NET中加载128位RSA密钥,并将其用于解密.但我似乎无法生成128位(或更低)的密钥,我总是得到错误'指定无效标志'.当我尝试512bits作为按键时,一切正常.那么512位是.NET的最小密钥吗?

Eug*_*its 5

512位(技术上)是RSA密钥的最小大小,但它不安全.现在1024位是绝对最小值,建议使用2048位.

注意,RSA中的1024位在安全级别上对应于128位对称算法.也许你混淆了这些值,认为128位对于非对称和symmstric加密是相同的,但不是,它们不是.


SwD*_*n81 5

每个AsymmetricAlgorithmSymmetricAlgorithm都有一个LegalKeySizes属性,可帮助您确定密钥大小是否对算法有效。从链接中,您可以打印出您正在使用的算法的有效密钥大小:

RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
for (int i = 0; i < rsa.LegalKeySizes.Length; i++)
{
   KeySizes key_size = rsa.LegalKeySizes[i];
   Console.WriteLine(String.Format("[Key Size {0}] - min: {1}, max: {2}, step: {2}",
      i, key_size.MinSize, key_size.MaxSize, key_size.SkipSize));
}
Run Code Online (Sandbox Code Playgroud)

对于RSACryptoServiceProvider,这将打印:

[密钥大小 0] - 最小:384,最大:16384,步长:16384