我可以解密密碼保護PKCS8 DER鍵下面的代碼:充氣城堡C# - 密碼保護關鍵
MemoryStream ms = new MemoryStream(privateKey);
AsymmetricKeyParameter keyparams = Org.BouncyCastle.Security.PrivateKeyFactory.DecryptKey(password.ToCharArray(), ms);
RSAParameters rsaparams = DotNetUtilities.ToRSAParameters((RsaPrivateCrtKeyParameters)keyparams);
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.ImportParameters(rsaparams);
return rsa;
現在,我必須重新創建同一類型的鍵時,它給我以不同的格式(在這個例子中它是作爲PFX文件給予我的)。所以我必須從PFX私鑰中創建一個密碼保護的PKCS8 DER密鑰。閱讀充氣城堡的源代碼後,我設法找到了PrivateKeyFactory.EncryptKey
功能,但我不能得到它的工作。我的代碼如下:
X509Certificate2 cert = new X509Certificate2(pfx_bytes, password,X509KeyStorageFlags.Exportable);
var pkey = cert.PrivateKey;
var bcCert = DotNetUtilities.FromX509Certificate(cert);
var bcPkey = DotNetUtilities.GetKeyPair(pkey).Private;
return PrivateKeyFactory.EncryptKey(Org.BouncyCastle.Asn1.DerObjectIdentifier.Der, password.ToCharArray(), Encoding.UTF8.GetBytes(Guid.NewGuid().ToString()), 10, bcPkey);
當我運行上面的代碼中,我得到的異常"System.ArgumentException
:嘗試使用非PBE算法PBE EncryptedPrivateKeyInfo一代」
谷歌搜索顯示沒有什麼,除了功能的源代碼,雖然我試圖順藤摸瓜找到解決方案我一直沒能來。
可有人請點我在正確的方向,我怎麼可以使用功能創建密碼保護PKCS8 DER密鑰來自標準.net私鑰?
http://www.codeproject.com/Articles/25487/Cryptographic-Interoperability-Keys PrivateKeyToPKCS8方法或許 – m0s 2012-07-22 07:59:54