今天用 no_padding 没问题,用 pkcs1 就报错。报错如下:
140310769923944:error:0406D06E:lib(4):func(109):reason(110):rsa_pk1.c:151
代码如下:
char *rsa_encrypt(char *plain, char *to, char *key_path) {
char *p_en;
RSA *p_rsa;
FILE *file;
int f_len, rsa_len;
if((file = fopen(key_path, "r")) == NULL){
perror("open file error");
return NULL;
}
if((p_rsa = PEM_read_RSAPublicKey(file, NULL, NULL, NULL)) == NULL){
ERR_print_errors_fp(stdout);
return NULL;
}
f_len = strlen(plain);
rsa_len = RSA_size(p_rsa);
p_en = (char *)malloc(rsa_len+1);
memset(to, 0, rsa_len+1);
if(RSA_public_encrypt(rsa_len, (unsigned char*)plain, (unsigned char*)p_en, p_rsa, RSA_PKCS1_PADDING) < 0){
ERR_print_errors_fp(stdout);
return NULL;
}
strcpy(to, (char *)p_en);
RSA_free(p_rsa);
fclose(file);
}