要安全地存储密钥,应将密钥存放在密钥容器中,而不是明文存放在文件中。
如果您不了解密钥容器,可以参照 MSDN 上的 了解计算机级别和用户级别的 RSA 密钥容器。
CspParameters 的名称空间是:
System.Security.Cryptography
创建和读取密钥容器
CspParameters cp = new CspParameters();
cp.KeyContainerName = ContainerName;
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(cp);
cp.KeyContainerName = ContainerName;
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(cp);
创建和读取密钥容器都使用上述代码:如果密钥容器不存在,则会自动创建,并将 rsa 产生的密钥存入其中;如果已经存在,则会读取其中的密钥给 rsa。
删除密钥容器
CspParameters cp = new CspParameters();
cp.KeyContainerName = ContainerName;
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(cp);
rsa.PersistKeyInCsp = false;
rsa.Clear();
cp.KeyContainerName = ContainerName;
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(cp);
rsa.PersistKeyInCsp = false;
rsa.Clear();
与创建和读取相比,多了两句。
安全性:程序 A 创建和密钥容器,程序 B 可以去读吗?
可以。如果要限制程序 B 去读,请参见上面提到的了解计算机级别和用户级别的 RSA 密钥容器。