我使用以下命令创建了一个客户 RSA 密钥容器(用于加密 web.config 中的连接字符串):
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 参数。我错过了什么吗?
另外,是否有使用 RSA 加密 .Net 配置部分的建议密钥大小?
我最终使用 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 建议密钥大小为 3072 位,以满足 2030 年以后所需的安全性。
密钥管理建议 http://csrc.nist.gov/publications/nistpubs/800-57/sp800-57-Part1-revised2_Mar08-2007.pdf- 参见表 4。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)