1

RSAを使用してデータをエンコード/デコード(最初はデコード)しようとしています。データの種類(文字列、バイト、またはその他のlolcatでエンコードされたデータ)は気にせず、仕事(暗号化操作)を実行する非常に単純な関数を探しているだけで、残りは実行できます。

これが私が試したことです:

CryptoPP::InvertibleRSAFunction rsa;

rsa.SetModulus( n_factor );
rsa.SetPrivateExponent(d_private_exponent);

rsa.SetPrime1( rsa_params.at(p1) );
rsa.SetPrime2( rsa_params.at(p2) );

// All above inputs are correct. I don't have public exponent, but it's works in other languages (I comprared all inputs/outputs)

bool key_ok = rsa.Validate(CryptoPP::NullRNG(), 15);
/* Returns false, but doesn't tell me why :/ */

CryptoPP::Integer to_decode( my_data, size_of_my_data );
res = rsa.CalculateInverse(rg,to_decode); 

これは次を返します:

EXCEPTION : what():  CryptoMaterial: this object contains invalid values

返されるエラーコードはに対応します"INVALID_DATA_FORMAT"。これはおそらく重要な問題ではなく、入力の問題を意味します。

誰かがこのライブラリの経験がある場合、または「noob」の間違いを検出した場合(4時間からコードに頭を悩ませているので、可能です)、助けていただければ幸いです。

4

1 に答える 1

1

思ったより簡単:

CryptoPP::Integer dec_data = a_exp_b_mod_c( enc_data, d_private_exponent, n_modulus );

したがって、「d」と「n」で十分でした。なぜ暗号化機能で動作しなかったのか本当にわかりません。

于 2013-02-10T10:16:26.880 に答える