2011-03-12 127 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