어리석은 질문에 대해 사과드립니다. 많은 예제를 보았지만 답변을 찾을 수 없습니다. 는 crypt와 RSA와 파일의 암호를 해독하려고 :RSA_private_decrypt 오류
암호화
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_size (pubKey)'바이트의 데이터를 쓰고'key_size' 바이트를 다시 읽는 중입니다. 이 올바른지? 'key_size'는'RSA_size (pubKey)'입니까? 무엇이'key_size'에서 11을 빼내려고 결정 했습니까? –
읽기 값을 rsa_size (pubKey)로 변경했지만 동일한 오류가 발생했습니다. – j0hn
RSA_size (pubKey) = 512, 512 = key_size – j0hn