gpt4 book ai didi

c++ - RSA_private_decrypt错误

转载 作者:行者123 更新时间:2023-11-30 20:33:06 25 4
gpt4 key购买 nike

对不起,我已经看了很多例子,但是找不到答案。
尝试使用rsa加密和解密文件:

加密

 ptext = (unsigned char *)malloc(key_size);
ctext = (unsigned char *)malloc(key_size);
while (1) {
inlen = _read(in, ptext, key_size);
if (inlen <= 0) break;
outlen = RSA_public_encrypt(inlen, ptext, ctext, pubKey,
RSA_PKCS1_PADDING);
if (outlen != RSA_size(pubKey)) exit(-1);
_write(out, ctext, outlen);
}


解密:

while (1) {     
inlen = _read(in, ctext, key_size);
printf("Read %i bytes\n", inlen);
if (inlen <= 0) break;
outlen = RSA_private_decrypt(key_size-11, ctext, ptext, privKey, RSA_PKCS1_PADDING);
printf("RSA returns %i\n", outlen);
if (outlen < 0)
{
fprintf(stderr, "OpenSSL error: %s\n", ERR_error_string(ERR_get_error(), NULL));
exit(0);
}
_write(out, ptext, outlen);
}


程序输出:

Read 431 bytes
RSA returns -1
OpenSSL error: error:0407109F:rsa routines:RSA_padding_check_PKCS1_type_2:pkcs decoding error


key_size或key_size-11->不变。
帮助plz绕过此错误。

最佳答案

对于RSA解密,flen必须是RSA_size(pubkey),而不是RSA_size(pubkey) - 11。因此类似

outlen = RSA_private_decrypt(RSA_size(pubKey), ctext, ptext, privKey, RSA_PKCS1_PADDING);


应该管用。解密后的明文应包含在 ctext[0] ... ctext[outlen-1]中。

关于c++ - RSA_private_decrypt错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46294070/

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