2010-11-13 1 views
0

Как преобразовать ключевой файл pkcs8 в формат DER, чтобы получить частный и открытый ключ в формате Xml?Как преобразовать файл ключа pkcs8 в формат DER в #C?

с OpenSSL я могу сделать это с помощью: OpenSSL pkcs8 информ DER -in aaa010101aaa_FIEL.key -out 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 is string (пароль), fileName - путь к .key двоичному файлу в формате DER –

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() даст вам МЭД отформатированный вещь. Нет гарантий, что это сработает, но PemReader должен по крайней мере поставить вас на правильный путь.

+0

В этом коде (я заменил PR для вара PR и EPKI для вара EPKI), PR возвращает значение, но EPKI возвращает нуль. не использовался :( –

+0

этот код не работает –