2010-11-13 66 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

相关问题