如何将PKCS8密钥文件转换为der格式,以XML格式获取私有和公共密钥?

使用OpenSSL,我可以使用:openssl pkcs8- inform der -in aaa010101aaa_fiel.key.key -out aaa.txt

aaa010101aaa_fiel.key是bynary文件

我正在尝试使用Bouncy Castle Library进行此操作,但是我有问题来创建新的EncryptedPrivateKeyInfo(...

在Java中有一篇文章可以做到这一点,但是我需要在C#中如何使用Java读取密码加密密钥?

有帮助吗?

解决方案 2

我找到了答案!

            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();

如何加载PKCS8二进制文件格式密钥

其他提示

Bouncycastle文档非常稀疏,我还没有做这个确切的事情,但是您将要使用org.bouncycastle.openssl.pemreader将文件读取到(可能)org.bouncycastle.asn1.pkcs.encryptedprivateprivateprivatekeyinfo,例如:

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至少应该使您走上正确的轨道。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top