gpt4 book ai didi

c# - 如何使用 C# 从 PKCS#12 (.p12) 文件获取私钥

转载 作者:行者123 更新时间:2023-11-30 18:05:34 25 4
gpt4 key购买 nike

我正在尝试使用 PKCS#12 证书签署一些数据,但是我无法从 PKCS#12 (.p12) 文件获取私钥。

    public byte[] sign(string text)
{
string password = "1111";
X509Certificate2 cert = new X509Certificate2("c:\\certificate.p12",password);
byte[] certData = cert.Export(X509ContentType.Pfx,password);

X509Certificate2 newCert = new X509Certificate2(certData, password);
RSACryptoServiceProvider crypt = (RSACryptoServiceProvider)newCert.PrivateKey;

SHA1Managed sha1 = new SHA1Managed();
UnicodeEncoding encoding = new UnicodeEncoding();
byte[] data = encoding.GetBytes(text);
byte[] hash = sha1.ComputeHash(data);
return crypt.SignHash(hash, CryptoConfig.MapNameToOID("SHA1"));
}

问题是 newCert.PrivateKey 为空,但如果我以类似的方式使用 .pfx certicitae,它会起作用。

    public byte[] sign(string text)
{
string password = "1234";
X509Certificate2 cert = new X509Certificate2("c:\\certificate.pfx", password);
RSACryptoServiceProvider crypt = (RSACryptoServiceProvider)cert.PrivateKey;
SHA1Managed sha1 = new SHA1Managed();
UnicodeEncoding encoding = new UnicodeEncoding();
byte[] data = encoding.GetBytes(text);
byte[] hash = sha1.ComputeHash(data);
return crypt.SignHash(hash, CryptoConfig.MapNameToOID("SHA1"));
}

所以问题是如何从 .p12 文件中获取私钥?

最佳答案

我发布了一个类似的问题 here ,虽然对你来说不是一回事,但问题也可能是权限。
我的建议是,首先,您必须确保(我想您已经做到了)私钥是可导出的并且您有权访问该文件。
接下来,尝试将内容类型导出为 X509ContentType.Pkcs12 而不是 X509ContentType.Pfx
最后,如果可能的话,为什么不尝试将它导入到 certstore。我相信这样更安全。这些步骤在上面的链接中。

关于c# - 如何使用 C# 从 PKCS#12 (.p12) 文件获取私钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5471716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com