Есть ли ограничение для показателей ключа RSA в .NET?

Используя С#, я не могу импортировать открытый ключ RSA с показателем степени {1, 0, 0, 0, 15}: есть исключение:

System.Security.Cryptography.CryptographicException was caught
  HResult=-2146893819
  Message=Bad Data.

  Source=mscorlib
  StackTrace:
       at System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32 hr)
       at System.Security.Cryptography.Utils._ImportKey(SafeProvHandle hCSP, Int32 keyNumber, CspProviderFlags flags, Object cspObject, SafeKeyHandle& hKey)
       at System.Security.Cryptography.RSACryptoServiceProvider.ImportParameters(RSAParameters parameters)
       at TestRSA.Form1.buttonTest_Click(Object sender, EventArgs e) in c:\Users\Thomas\Documents\Visual Studio 2010\Projects\Modules\TestRSA\Form1.cs:line 32

Используемый код:

RSACryptoServiceProvider rsaAlg = new RSACryptoServiceProvider();
RSAParameters key = new RSAParameters();
key.Exponent = new byte[5] { 1, 0, 0, 0, 15 };
key.Modulus = GetModulus(); // byte Array with length 256...
rsaAlg.ImportParameters(key); // <<== this call will throw the exception

Есть ли ограничение для показателей ключа RSA в .NET? (С Exponent == { 1, 0, 1 } импорт завершится успешно.

С уважением Томас


person Thomas    schedule 14.12.2014    source источник
comment
Некоторые реализации RSA ограничивают открытый показатель до 32 бит. В вашем примере 33. Так что я предполагаю, что реализация Microsoft имеет этот предел.   -  person CodesInChaos    schedule 15.12.2014


Ответы (1)


Поставщик по умолчанию от Microsoft поддерживает только экспоненты открытого ключа определенного размера, net/27485349#comment43397390_27474550">как размышлял CodesInChaos:

CNG более гибок в отношении пар ключей RSA. Например, CNG поддерживает общедоступные экспоненты длиной более 32 бит и поддерживает ключи, в которых p и q имеют разную длину.

и

Обратите внимание, что ограничение на 4-байтовые экспоненты относится только к MS CSP. CryptoAPI должен иметь возможность работать с 5-байтовыми экспонентами при использовании стороннего CSP.

Источники:

person Maarten Bodewes    schedule 15.12.2014