私は、C++で3つの関数を書いて、Crypto ++を使用してキーペアを生成し、文字列を暗号化して解読します。 Crypto++ side:Crypto ++ RSA暗号文を解読すると例外が発生する
//Decode public key
RSA::PublicKey pbKeyDecoded;
StringSource ss2(publicKey, true, new Base64Decoder);
pbKeyDecoded.BERDecode(ss2);
Integer m = Integer((const byte*)plaintext.data(), plaintext.size());
Integer crypted = pbKeyDecoded.ApplyFunction(m);
...
私は何をすべきかは、DERはそれをエンコードして、Base64でそれをエンコードし、鍵を生成する、です。その後、私は公開鍵を介して平文を暗号化し、秘密鍵と暗号をbase64でエンコードされた文字列として2つの別々のファイルに保存します。
Now to C#。私はbase64の文字列を読んで、それらをデコードし、AsnParser経由で読み込みます。それからDecrypt
と呼んでいます。 C# side:
AsnKeyParser keyParser = new AsnKeyParser("rsa-public.der");
RSAParameters publicKey = keyParser.ParseRSAPublicKey();
CspParameters csp = new CspParameters;
csp.KeyContainerName = "RSA Test (OK to Delete)";
csp.ProviderType = PROV_RSA_FULL; // 1
csp.KeyNumber = AT_KEYEXCHANGE; // 1
RSACryptoServiceProvider rsp = new RSACryptoServiceProvider(csp);
rsp.PersistKeyInCsp = false;
rsp.ImportParameters(privateKey);
//Causes exception here..
var data = rsp.Decrypt(cipherArr, true);
...
しかし、私はfOAEP = true
でそれを解読しようとすると、私は、例外エラーを取得しています:CryptographicException:OAEPパディングのデコード中にエラーが発生しました。私がfOAEP = false
を渡すと、が得られます。CryptographicException:パラメータが間違っています。
Crypto ++暗号テキストを復号化しようとすると、C#で例外が発生するのはなぜですか?
pastebinにリンクするのではなく、質問にあなたのコードを載せてください。そうしないと、あなたの質問が閉じられる可能性があります。また、MCVE(http://stackoverflow.com/help/mcve)を実行できない場合は、ここに投稿する前に無関係なコードをすべて削除してください。 –