2011-03-12 87 views
2

我已經創建了一個顧客RSA密鑰容器(用於在web.config中加密的連接字符串),使用下面的命令:如何設置使用aspnet_regiis創建的RSA密鑰的密鑰大小?

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忽略了大小的論點。我錯過了什麼嗎?

另外,是否有推薦的密鑰大小使用RSA加密.Net配置部分?

+0

什麼是你用來導出密鑰的命令? – 2011-03-13 03:07:26

+0

要導出我使用的密鑰:aspnet_regiis -px「TestKeys」「C:\ TestKeys.xml」-pri – 2011-03-13 08:00:00

回答

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超過2030

Recommendations for key management所需的安全3072位的密鑰大小 - 見表4