微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

CryptoPP 生成无效的密钥 RSA

如何解决CryptoPP 生成无效的密钥 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,d);
}

程序崩溃到:InvertibleRSAFunction: input is not a valid RSA private key

解决方法

您的问题是您在密钥生成后修改了指数。

params.GenerateRandomWithKeySize(prng,2048);
params.SetPublicExponent(65537);

其实key是在第一行生成的,e = 17。尝试改变行序。

params.SetPublicExponent(65537);
params.GenerateRandomWithKeySize(prng,2048);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。