【发布时间】:2012-02-26 22:04:51
【问题描述】:
示例代码:
CspParameters cspParameters = new CspParameters();
cspParameters.ProviderType = 1; // PROV_RSA_FULL
// Create the crypto service provider, generating a new
// key.
mRsaCSP = new RSACryptoServiceProvider(mDefaultKeyLength, cspParameters);
mRsaCSP.PersistKeyInCsp = true;
RSAParameters privateKey = mRsaCSP.ExportParameters(true);
byte[] rsaBytes = mRsaCSP.ExportCspBlob(true);
try
{
X509Certificate2 cert = new X509Certificate2(rsaBytes);
mKeyDataPfx = Convert.ToBase64String(cert.Export(X509ContentType.Pkcs12, password));
}
catch (Exception ce)
{
string error = ce.Message;
}
【问题讨论】:
-
RSA 密钥与 X509 证书不直接兼容。 X509 证书需要由颁发者签名的密钥,即使它是自签名的。你能告诉我们你真正想要完成什么吗?您是否尝试在代码中动态创建 X509 证书?
-
是的。这正是我想要做的。这个想法是我将旧的 RSA 证书存储为带有 RSACryptoServiceProvider.ToXmlString(true) 的字符串。这些需要读入并导出为 PFX 文件。需要生成新的 RSA 证书并将其存储为 PFX 文件。
-
我建议您查看 Bouncy Castle .NET 源代码和示例。我认为示例 bccrypto-net-1.7-src\csharp\crypto\test\src\pkcs\examples\PKCS12Example.cs 应该可以帮助您入门。 bouncycastle.org/csharp
标签: c# .net rsa x509 x509certificate2