将私钥导出为字节数组的最佳方法
本文关键字:数组 最佳 方法 字节数 字节 私钥 | 更新日期: 2023-09-27 18:12:26
我编写的应用程序必须从用户获取私钥,然后将其作为base64发送到另一个应用程序,我想允许用户插入带有私钥的X509Certificate2。现在我的大问题是如何将私钥从AsimetricAlgorithm对象转换为包含所有私钥的bate数组?我看到我可以使用openSSl -将所有证书转换为pem文件,然后转换为RSA文件-并读取私钥,但我不想使用它,因为:我不想在文件上使用,3P库,它不安全等等。有人知道另一种方法吗?
提前感谢!
您从X509Certificate2
的PrivateKey
属性中获得的AsymmetricAlgorithm
对象实际上将是AsymmetricAlgorithm
派生的各种类型之一的实例,例如RSACryptoServiceProvider
, DSACryptoServiceProvider
等…
您需要确定正在处理的私钥的类型,并适当地转换它。转换后,您应该能够调用ExportCspBlob(true)
来获取私钥数据。
示例(假设有RSA密钥):
public string GetRSAPrivateKeyBase64(X509Certificate2 certificate)
{
var privateKey = certificate.PrivateKey as RSACryptoServiceProvider;
if (privateKey == null) throw new Exception("Not an RSA private key");
// Export the CSP blob, including private key parameters
var cspBlob = privateKey.ExportCspBlob(true);
return Convert.ToBase64String(cspBlob);
}