gpt4 book ai didi

c++ - rsa_private_decrypt 返回-1,错误0x0306B067

转载 作者:太空宇宙 更新时间:2023-11-04 13:41:54 25 4
gpt4 key购买 nike

我想在 C++ 中使用 OpenSSL 测试 RSA key 对。我加密文本并立即解密。加密成功完成,但解密始终返回 -1。错误编号为:

0306B067:lib(3):func(107):reason(103)

我找不到原因...代码是:

char* text = "hello!!!";
unsigned char * cipher ;
unsigned char * decipher ;
int size = RSA_size(prvKey);
cipher = (unsigned char *)malloc(size);
decipher = (unsigned char *)malloc(size);
int cipherres = RSA_public_encrypt(size - 11/*strlen(text)*/,(unsigned char*)text,cipher,pubKey,RSA_PKCS1_PADDING);

int decipherres = RSA_private_decrypt(size,cipher,decipher,prvKey,RSA_PKCS1_PADDING);
if (decipherres == -1)

RSA key 对是在使用 RSA_generate_key_ex() 函数之前生成的,它的 key 对在 pubKey 和 prvKey 中。

最佳答案

我不喜欢这条线的样子:

int cipherres = RSA_public_encrypt(size - 11/strlen(text)/,...

您应该使用文本的长度,这似乎是您之前所做的。我不知道你从哪里得到 11,但代码中的魔法数字很难闻。

尝试:

int cipherres = RSA_public_encrypt(strlen(text),...

此外,请参阅 RSA_public_encrypt here 的文档,下面这行看起来是错误的:

int size = RSA_size(prvKey);

根据定义,prvKey 和 pubKey 的大小是否相同?如果不是,请尝试在加密之前使用公钥获取大小:

int size = RSA_size(pubKey);

然后您可能需要单独获取 prvKey 的大小并将解密缓冲区 malloc 到该大小。

关于c++ - rsa_private_decrypt 返回-1,错误0x0306B067,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27375175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com