.NET RSA шифрование: минимальный размер ключа? - PullRequest
1 голос
/ 31 января 2011

Я могу загрузить 128-битный ключ RSA в .NET и использовать его для расшифровки. Но я не могу сгенерировать 128-битные (или более низкие) ключи, я всегда получаю ошибку «Указаны неверные флаги» Когда я пытаюсь 512bit в качестве ключа, все работает нормально. Итак, является ли 512 бит минимальным размером ключа для .NET?

Ответы [ 2 ]

5 голосов
/ 31 января 2011

512 бит - это (технически) минимальный размер ключа RSA, но он небезопасен.В настоящее время абсолютный минимум составляет 1024 бита, и рекомендуется 2048 бит.

Обратите внимание, что 1024 бита в RSA по уровню безопасности соответствуют 128 битам симметричного алгоритма.Возможно, вы перепутали эти значения, полагая, что 128-битное кодирование одинаково для асимметричного и симметричного шифрования, но нет, это не так.

3 голосов
/ 31 января 2011

Каждый AsymmetricAlgorithm и SymmetricAlgorithm имеет свойство 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));
}

Для RSACryptoServiceProvider , это выведет:

[Размер ключа 0] - мин: 384, макс: 16384, шаг: 16384

...