2010-11-13 71 views
0

如何將pkcs8密鑰文件轉換爲DER格式,以XML格式獲取私鑰和​​公鑰?如何在#C中將pkcs8密鑰文件轉換爲DER格式?

與OpenSSL的,我可以用做: OpenSSL的PKCS8 -inform DER -in aaa010101aaa_FIEL.key退房手續aaa.txt

aaa010101aaa_FIEL.key是bynary文件

我試圖做到這一點的充氣城堡庫,但我有問題,創造新的EncryptedPrivateKeyInfo(...

有一個職位做到這一點在Java中,但我需要在C# How to read a password encrypted key with java?

回答

1

我找到了答案!

  byte[] dataKey = File.ReadAllBytes(fileName); 

     Org.BouncyCastle.Crypto.AsymmetricKeyParameter asp = 
      Org.BouncyCastle.Security.PrivateKeyFactory.DecryptKey(pass.ToCharArray(), dataKey); 

     MemoryStream ms = new MemoryStream(); 
     TextWriter writer = new StreamWriter(ms); 
     System.IO.StringWriter stWrite = new System.IO.StringWriter(); 
     Org.BouncyCastle.OpenSsl.PemWriter pmw = new PemWriter(stWrite); 
     pmw.WriteObject(asp); 
     stWrite.Close(); 
     return stWrite.ToString(); 

How to Load pkcs8 binary file format key

+0

pass是字符串(密碼),fileName是DER格式的.key二進制文件的路徑 – 2010-11-17 13:56:00

0

博uncyCastle文檔相當稀少,我沒有做這件事,但你會想使用Org.BouncyCastle.OpenSsl.PemReader將文件讀入(可能)Org.BouncyCastle.Asn1.Pkcs.EncryptedPrivateKeyInfo,像這樣:

using (FileStream FS = File.Open("whatever.key")) 
{ 
using (TextReader TR = new StreamReader(FS)) 
    { 
    PR = new Org.BouncyCastle.OpenSsl.PemReader(TR); 
    EPKI = (Org.BouncyCastle.Asn1.Pkcs.EncryptedPrivateKeyInfo)PR.ReadObject(); 
} 
} 

然後EPKI.GetDerEncoded()會給你DER格式化的東西。沒有保證這會起作用,但PemReader至少應該把你放在正確的軌道上。

+0

在此代碼(I代替PR爲VAR PR,以及用於EPKI EPKI變種), PR返回一個值,但EPKI返回null。 didn work :( – 2010-11-15 05:07:59

+0

代碼不起作用 – 2010-11-17 13:57:11

相關問題