【发布时间】:2012-06-29 17:59:15
【问题描述】:
是否可以仅使用 C# 生成 RSA 密钥对,将其导出为与DKIM's PEM-like format 兼容的 ASN1 格式?
我想减少对第 3 方的依赖,但这里有一些我发现
充气城堡
密码学应用程序块
Win32 PFXImportCertStore
- http://msdn.microsoft.com/en-us/library/aa387314(v=vs.85).aspx
- http://msdn.microsoft.com/en-us/library/aa387313(v=vs.85)
导入 PEM
- 此代码仅导入 PEM 数据,但与 OpenSSL 的不同之处在于它修复了 .NET 4.0 和密钥 http://www.codeproject.com/Articles/162194/Certificates-to-DB-and-Back 中的前导零的问题
Microsoft 的 CLR 安全增强功能
微软 CNG
这是 Microsoft CNG 提供商的代码,在 codeplex 上带有 .NET dll(上图)...但是我不知道如何在 DKIM compatible ASN1 format 中导出和导入公钥和私钥。
byte[] pkcs8PrivateKey = null;
byte[] signedData = null;
CngKey key = CngKey.Create(CngAlgorithm2.Rsa);
byte[] exportedPrivateBytes = key.Export(CngKeyBlobFormat.GenericPrivateBlob);
string exportedPrivateString= Encoding.UTF8.GetString(exportedPrivateBytes);
pkcs8PrivateKey = Encoding.UTF8.GetBytes(exportedPrivateString);
using (CngKey signingKey = CngKey.Import(pkcs8PrivateKey, CngKeyBlobFormat.Pkcs8PrivateBlob))
{
using (RSACng rsa = new RSACng(signingKey))
{
rsa.SignatureHashAlgorithm = CngAlgorithm.Sha1;
signedData = rsa.SignData(dataToSign);
}
}
问题
是否有使用 Microsoft 库(Codeplex 上的 Win32、PFX 或 CLR)的直接示例来说明如何创建密钥对并以 PEM 格式导出/导入这些值?
【问题讨论】:
-
PEM 并不是一种真正的格式,因此您需要更具体地说明您想要“PEM 格式”的原因,以及您希望与之互操作的内容。
-
@GregS 我更新了这个问题。我想要与存储在 DNS 中的 DKIM 条目兼容的 ASN1 格式
-
这看起来像是对您问题的回答:blogs.msdn.com/b/dcook/archive/2008/11/25/…
标签: c# certificate rsa pem