是否可以仅使用 C#生成 RSA 密钥对,将其导出为与DKIM 的类 PEM格式兼容的 ASN1 格式?
我想减少对第三方的依赖,但这里有一些我发现
充气城堡
密码学应用程序块
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-中的前导零的问题后退
Microsoft 的 CLR 安全增强功能
微软压缩天然气
这是 Microsoft CNG 提供程序在 codeplex 上的 .NET dll 的代码(上图)...但是我不知道如何以DKIM 兼容的 ASN1 格式导出和导入公钥和私钥。
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 格式导出/导入这些值?