我编写的应用程序必须从用户那里获取私钥,然后将其作为 base64 发送到另一个应用程序,我想允许用户使用私钥插入 X509Certificate2。现在我的大问题是如何将私钥从 AsimetricAlgorithm 对象转换为包含所有私钥的 bate 数组?我看到我可以使用 openSSl - 将所有证书转换为 pem 文件,然后转换为 RSA 文件 - 并读取私钥,但我不想使用它,因为:我不想在文件上使用 3P 库,它不是安全等等..有人知道另一种方法吗?
提前致谢!
我编写的应用程序必须从用户那里获取私钥,然后将其作为 base64 发送到另一个应用程序,我想允许用户使用私钥插入 X509Certificate2。现在我的大问题是如何将私钥从 AsimetricAlgorithm 对象转换为包含所有私钥的 bate 数组?我看到我可以使用 openSSl - 将所有证书转换为 pem 文件,然后转换为 RSA 文件 - 并读取私钥,但我不想使用它,因为:我不想在文件上使用 3P 库,它不是安全等等..有人知道另一种方法吗?
提前致谢!
您从您的 will 的属性中获得的AsymmetricAlgorithm
对象实际上是从 派生的各种类型之一的实例,例如,等...PrivateKey
X509Certificate2
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);
}