【问题标题】:Decrypt String with *.Pem file in C#在 C# 中使用 *.Pem 文件解密字符串
【发布时间】:2012-01-26 20:42:52
【问题描述】:

好的,我有一个用 Base64 编码的文本字符串。

我想将它从 Base64 解码为一个字节数组,然后用我的私钥解密它。我的私钥是一个 *.pem 文件。我迷路了!

我想我需要声明一个字节数组,抓取我的 *.pem 的 ---BEGIN--- 和 ---END--- 部分之间的文本,并将其从 base 64 字符串转换为我的字节数组的结果。

然后我需要声明一个 X509Certificate2,并使用接受字节数组和文本字符串的构造函数,字节数组是我的私钥,文本字符串是我的密码,如下所示:

byte[] myprivateKey = Convert.FromBase64String("BASE 64 ENCODED PRIVATE KEY GOES HERE");
X509Certificate2 myPem = new X509Certificate2(myprivateKey, "MY PASSPHRASE");

但是,此时我收到以下错误:

找不到请求的对象。

我至少是在朝着正确的方向前进,还是离题了?我需要在这里做什么?

【问题讨论】:

    标签: c# encryption cryptography pem x509certificate2


    【解决方案1】:

    X509Certificate2 不会从 PEM base64 编码文件中读取私钥。您需要从证书中读取私钥,然后将其分配给 PrivateKey 属性。

    更多详情请见how to get private key from PEM file?

    【讨论】:

    • 谢谢,这真的很有帮助,但是我在哪里可以找到“ASN1”和“X509ExtensionCollection”?我需要使用哪些参考资料?谢谢你
    • 这都是 Mono.Security.dll 的一部分(它是 Mono 的一部分,但也适用于 MS.NET)。完整的源代码可从github.com/mono/mono/tree/master/mcs/class/Mono.Security获得
    • 抱歉,我还有一个问题,我可以下载并添加到我的项目中的实际 DLL 文件吗?还是我需要在此链接下载项目并添加它?谢谢你
    • AFAIK 二进制 .dll 无法自行下载。但它确实存在于 Win32 的所有 Mono 运行时下载(以及重用它的其他项目中)。否则,您可以在自己的应用程序中复制粘贴您需要的源/文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    • 1970-01-01
    相关资源
    最近更新 更多