CryptoPP 生成无效密钥 RSA
CryptoPP generates invalid keys RSA
我正在尝试使用 C++ 中的 RSA 加密一些文本,
加密时我正在生成 n, e, d
但是当尝试解密时,私钥初始化程序说密钥无效...
所以我构建了一个生成密钥的代码,然后尝试立即初始化一个私钥对象,它说密钥仍然无效:
int main()
{
CryptoPP::InvertibleRSAFunction params;
CryptoPP::AutoSeededRandomPool prng;
params.GenerateRandomWithKeySize(prng, 2048);
params.SetPublicExponent(65537);
const CryptoPP::Integer& n = params.GetModulus();
const CryptoPP::Integer& p = params.GetPrime1();
const CryptoPP::Integer& q = params.GetPrime2();
const CryptoPP::Integer& d = params.GetPrivateExponent();
const CryptoPP::Integer& e = params.GetPublicExponent();
CryptoPP::RSA::PrivateKey privk;
privk.Initialize(n, e, d);
}
程序崩溃到:InvertibleRSAFunction: input is not a valid RSA private key
你的问题是你在生成密钥后修改了指数。
params.GenerateRandomWithKeySize(prng, 2048);
params.SetPublicExponent(65537);
实际上密钥是在第一行生成的,e = 17。尝试更改行顺序。
params.SetPublicExponent(65537);
params.GenerateRandomWithKeySize(prng, 2048);
我正在尝试使用 C++ 中的 RSA 加密一些文本,
加密时我正在生成 n, e, d
但是当尝试解密时,私钥初始化程序说密钥无效...
所以我构建了一个生成密钥的代码,然后尝试立即初始化一个私钥对象,它说密钥仍然无效:
int main()
{
CryptoPP::InvertibleRSAFunction params;
CryptoPP::AutoSeededRandomPool prng;
params.GenerateRandomWithKeySize(prng, 2048);
params.SetPublicExponent(65537);
const CryptoPP::Integer& n = params.GetModulus();
const CryptoPP::Integer& p = params.GetPrime1();
const CryptoPP::Integer& q = params.GetPrime2();
const CryptoPP::Integer& d = params.GetPrivateExponent();
const CryptoPP::Integer& e = params.GetPublicExponent();
CryptoPP::RSA::PrivateKey privk;
privk.Initialize(n, e, d);
}
程序崩溃到:InvertibleRSAFunction: input is not a valid RSA private key
你的问题是你在生成密钥后修改了指数。
params.GenerateRandomWithKeySize(prng, 2048);
params.SetPublicExponent(65537);
实际上密钥是在第一行生成的,e = 17。尝试更改行顺序。
params.SetPublicExponent(65537);
params.GenerateRandomWithKeySize(prng, 2048);