2011-03-12 6 views
2

я создал контейнер клиент ключей RSA (для шифрования строки подключения в файле web.config) с помощью следующей команды:Как установить размер ключа RSA-ключа, созданного с помощью aspnet_regiis?

aspnet_regiis -pc «TestKeys» -size 2048 -exp

я экспортировал ключ файл XML и использовал его, чтобы инициализировать экземпляр RSACryptoServiceProvider так, чтобы я мог проверить размер ключа был определенно 2048. Однако, используя код ниже, отображается размер ключа в 1024.

using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider()) 
{ 
    using (FileStream fs = new FileStream(@"C:\TestKeys.xml", FileMode.Open)) 
    { 
     using (StreamReader sr = new StreamReader(fs)) 
     { 
      rsa.FromXmlString(sr.ReadToEnd()); 
     } 
    } 

    Console.WriteLine(rsa.KeySize.ToString()); 
} 

кажется, что aspnet_regiis игнорирует аргумент -size. Я что-то упускаю?

Также существует рекомендуемый размер ключа для шифрования .Net-конфигурационных разделов с использованием RSA?

+0

Какова была команда, которую вы использовали для экспорта ключа? –

+0

Чтобы экспортировать ключ, который я использовал: aspnet_regiis -px "TestKeys" "C: \ TestKeys.xml" -pri –

ответ

2

Я закончил использование класса RSACryptoServiceProvider для создания контейнера ключей, поскольку он создает ключи с указанным размером.

CspParameters cp = new CspParameters(); 

cp.KeyContainerName = keyContainerName; 
cp.Flags = CspProviderFlags.UseMachineKeyStore; 
cp.KeyNumber = 1; 

using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(keySize, cp)) 
{ 
    using (FileStream fs = new FileStream(fileName, FileMode.Create)) 
    { 
     using (StreamWriter sw = new StreamWriter(fs)) 
     { 
      sw.WriteLine(rsa.ToXmlString(true)); 
     } 
    } 
} 

NIST receommend размер ключа 3072 бит для обеспечения требуемой за 2030.

Recommendations for key management - см Таблица 4.