gpt4 book ai didi

c# - 使用私钥 X.509 证书解密

转载 作者:太空狗 更新时间:2023-10-29 20:06:12 25 4
gpt4 key购买 nike

我在使用 X.509 证书解密消息时遇到问题。

我使用以下选项使用 makecert 生成我的证书:

makecert -r -pe -n "CN=MyCertificate" -ss CA -sr CurrentUser -a sha1 -sky signature -cy authority -sv CA.pvk CA.cer

私钥是“mypassword”。

我的问题是当我想解密用 c# 中以前的证书加密的消息时。

我找到了这个类 http://blog.shutupandcode.net/?p=660 ,但在 X509Decrypt 方法中,PrivateKey 始终为空。

public static byte[] X509Decrypt(byte[] data, string certificateFile, string password){    // load the certificate and decrypt the specified data    using (var ss = new System.Security.SecureString())    {        foreach (var keyChar in password.ToCharArray())            ss.AppendChar(keyChar);        // load the password protected certificate file        X509Certificate2 cert = new X509Certificate2(certificateFile, ss);        using (RSACryptoServiceProvider rsa = (RSACryptoServiceProvider)cert.PrivateKey)        {            return rsa.Decrypt(data, true);        }        }}

我尝试传递证书文件 (.cer)

X509DecryptString(token, @"c:\CA.cer", "mypassword");

并传递 pvk 文件 (.pvk)

X509DecryptString(token, @"c:\CA.pvk", "mypassword");

但总有 PrivateKey 属性为 null。

谁能指导我使用 pvk 文件解密消息?

谢谢,

何塞

最佳答案

证书本身只包含公钥(+一些数据),不包含私钥。 (RSA 私钥不太可能是“mypassword”。保护私钥的密码可能是“mypassword”,但私钥本身(更具体地说是 RSA 中的私钥指数)将是一个相当长的数字。)

结果(因为 CA.cer 只包含证书),X509DecryptString(token, @"c:\CA.cer", "mypassword") 将几乎肯定行不通。

X509DecryptString(token, @"c:\CA.pvk", "mypassword"); 原则上可以工作,但您正在创建一个 X509Certificate2 对象它,它仍然需要证书和私钥。您应该能够从 PKCS#12 容器 (.p12/.pfx) 加载它。

要创建这个容器,你可以使用pvk2pfx:

pvk2pfx -spc CA.cer -pvk CA.pvk -pfx CA.pfx

(如果不指定-pfx CA.pfx,会启动交互界面,此时需要勾选导出私钥。)

然后,尝试使用该 pfx/p12 文件进行解密。

关于c# - 使用私钥 X.509 证书解密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4097514/

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