如何将SecureString中的私钥/公钥插入RSACryptoServiceProvider



假设我已经将RSA密钥硬编码为字符串const:

private const String rsaXmlKey = "<RSAKeyValue>something</RSAKeyValue>

然后我可以用这种方式将它与RSACryptoServiceProvider一起使用:

RSACryptoServiceProvider csp = new RSACryptoServiceProvider();
csp .FromXmlString(rsaXmlKey);

但我想做得更好,并将RSA密钥保留在SecureString中。我知道初始化SecureString有一些问题,但这并不重要。我想知道如何将SecureString传递给RSACryptoServiceProvider?

它支持SecureString吗?

我不想将SecureString转换为String,因为这是没有道理的。

否,无法通过SecureString导入私钥(ToXmlString格式)。

你的假设也没有什么意义。

首先,您不应该在应用程序中嵌入私钥。它被某人提取,这意味着你有虚假的安全性,这比没有安全性更糟糕。

第二,不能将文本字符串安全地加载到SecureString中。一个常量字符串将被写入中间字符串表,这意味着它是可发现的;击败你假定的欲望。对AppendChar的顺序调用进行硬编码意味着IL仍然会拼写出您的私钥,返回到第1点。或者,引用MSDN的话:

SecureString对象永远不应该由String构造,因为敏感数据已经受到不可变String类的内存持久性后果的影响。构造SecureString对象的最佳方法是从一次一个字符的非托管源(如Console)中构建。ReadKey方法。

最新更新