我发现许多帖子如何通过RSACryptoServiceProvider做到这一点,但是所有人都缺少一件事。即使很小,我也想问是否有人知道如何有效地做到这一点。
实例化RSACryptoServiceProvider时,它将生成一个私钥/公钥。对象上有导入方法,您可以导入另一个键。例如ImportCspBlob。令我困扰的是,即使我不需要它们,它在执行构造函数时也会生成私钥/公钥对。无论如何,我计划导入另一个密钥。问题是如何要么在执行构造函数时避免生成密钥,要么将我的密钥传递给构造函数以有效地避免生成新的密钥对?
[此外,我知道密钥容器,并了解了如何使用它通过将CspParameters传递给构造函数,但是在我的情况下,我将公共密钥传递给了另一个应用程序或系统,这意味着该容器还是空的。
RSACryptoServiceProvider
构造函数确实根据简短的构造函数文档创建了一个密钥对:
使用随机密钥对初始化
RSACryptoServiceProvider
类的新实例。
但是,如果您单击构造函数,然后阅读完整的文档,那么甚至在示例代码下面,您都会得到这句话:
此构造方法不会生成新的公用/专用密钥对立即。如果没有通过
ImportParameters
方法或任何其他密钥导入方法加载的密钥,则在需要密钥之前,将根据需要创建一个1024位临时密钥。
换句话说,它使用密钥对字段的延迟实例化。
所以您的假设是错误的,但是您有一个很大的借口将其弄错:.NET加密类的文档仍未达到应有的水平。