我只是尝试使用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小时内完成了代码,那么有可能),任何帮助都会受到赞赏。
答案 0 :(得分:1)
比我想象的更容易:
CryptoPP::Integer dec_data = a_exp_b_mod_c( enc_data, d_private_exponent, n_modulus );
所以'd'和'n'是真的。我真的不明白为什么它不能用于加密功能。