Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#Bouncy Castle解码私钥_C#_Rsa_Bouncycastle - Fatal编程技术网

C#Bouncy Castle解码私钥

C#Bouncy Castle解码私钥,c#,rsa,bouncycastle,C#,Rsa,Bouncycastle,使用输入到C#类的私钥密码解码私钥时出错。我认为问题的关键在于: 正在从具有换行符的文本文件中读取 私钥不是使用此库创建的,因此可能我没有正确解码它 我不知道生成此密钥的系统是什么(具体来说,它是从Ruby安全库生成的) 引发的异常是 Org.BouncyCastle.Crypto.InvalidCipherTextException 带着信息 焊盘块损坏 发生在第行objectprivateKeyObject=pemReader.ReadObject() 以下是提供给我的私钥示例: -----

使用输入到C#类的私钥密码解码私钥时出错。我认为问题的关键在于:

  • 正在从具有换行符的文本文件中读取
  • 私钥不是使用此库创建的,因此可能我没有正确解码它
  • 我不知道生成此密钥的系统是什么(具体来说,它是从Ruby安全库生成的)
  • 引发的异常是

    Org.BouncyCastle.Crypto.InvalidCipherTextException

    带着信息

    焊盘块损坏

    发生在第行
    objectprivateKeyObject=pemReader.ReadObject()

    以下是提供给我的私钥示例:

    -----BEGIN RSA PRIVATE KEY-----
    Proc-Type: 4,ENCRYPTED
    DEK-Info: DES-EDE3-CBC,C7E12029C6ED8D89
    
    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
    -----END RSA PRIVATE KEY-----
    
    以下是私钥密码:

    SPH?!(C7ryh~juR>
    
    代码如下:

    private readonly string _pubKey;
    private readonly string _privateKey;
    private readonly string _privateKeyPass;
    
    public RSAKeyEncryption(string pubKey, string privateKey, string privateKeyPass)
    {
        _pubKey = pubKey;
        _privateKey = privateKey;
        _privateKeyPass = privateKeyPass;
    }
    
    private AsymmetricCipherKeyPair DecodePrivateKey()
    {
        TextReader textReader = new StringReader(_privateKey);
        PemReader pemReader = new PemReader(textReader, new PasswordFinder(_privateKeyPass));
        object privateKeyObject = pemReader.ReadObject();
        AsymmetricCipherKeyPair keyPair = (AsymmetricCipherKeyPair)privateKeyObject;
        return keyPair;
    }
    

    以下代码适用于我:

    //  https://stackoverflow.com/a/6038944/1911064
    StreamReader sr = new StreamReader(@"E:\AK\temp\key.pem");
    string privateKeyPass = "SPH?!(C7ryh~juR>";
    var pf = new PasswordFinder(privateKeyPass);
    PemReader pr = new PemReader(sr, pf);
    AsymmetricCipherKeyPair KeyPair = (AsymmetricCipherKeyPair)pr.ReadObject();
    RSAParameters rsa =
            DotNetUtilities.ToRSAParameters((RsaPrivateCrtKeyParameters)KeyPair.Private);
    

    以下代码适用于我:

    //  https://stackoverflow.com/a/6038944/1911064
    StreamReader sr = new StreamReader(@"E:\AK\temp\key.pem");
    string privateKeyPass = "SPH?!(C7ryh~juR>";
    var pf = new PasswordFinder(privateKeyPass);
    PemReader pr = new PemReader(sr, pf);
    AsymmetricCipherKeyPair KeyPair = (AsymmetricCipherKeyPair)pr.ReadObject();
    RSAParameters rsa =
            DotNetUtilities.ToRSAParameters((RsaPrivateCrtKeyParameters)KeyPair.Private);
    

    我试图使用
    openssl pkey-in key.pem查看您的密钥,但
    无法加载密钥。我怀疑您的密码中有Unicode字符。如果可能,您可能希望尝试使用纯ASCII密码,其中所有字符的代码都在0x20和0x7E之间。@Axelkeper抱歉,密钥是SPH?!(C7ryh~juR>带键
    SPH?!(C7ryh~juR>
    ,openssl可以加载您的密钥,而不会出现错误消息。很高兴您发现了这一点。现在的问题是为什么Bouncy Castle无法加载。我尝试使用
    openssl pkey-in key.pem
    查看您的密钥,但无法加载密钥。我怀疑您的密码中有Unicode字符。如果可能,您可能希望尝试纯
    >ASCII
    password,其中所有字符的代码都在0x20和0x7E之间。@Axelkeper抱歉,密钥是SPH?!(C7ryh~juR>带密钥
    SPH?!(C7ryh~juR>
    ,openssl可以加载您的密钥而不会出现错误消息。很高兴您发现了这一点。现在的问题是为什么Bouncy Castle不能加载。谢谢。问题有两个方面。首先,我有一个unicode
    \uxxx
    字符,这是密码错误地提供给我的方式,而不是
    ,还有,因为密码d是从一个文本文件中读取的,它的末尾有一个
    \n
    换行符。如果它存在,我必须确保将其删除。谢谢。问题有两个方面。首先,我有一个unicode
    \uxxx
    字符,这是错误地向我提供密码的方式,而不是
    ,还有,因为密码是rd是从一个文本文件中读取的,它的末尾有一个
    \n
    换行符。如果它存在,我必须确保将其删除。