- 论坛徽章:
- 1
|
代码如下:- char* rsa_encrypt(const char* keydata,const char* data) {
- unsigned char *out = NULL:
- RSA *key = NULL;
- BIO *bio = BIO_new(BIO_s_mem());
- BIO_puts(bio,keydata);
- key = PEM_read_bio_RSAPublicKey(bio,NULL,NULL,NULL);
- int flen = RSA_size(key);
- out = (unsigned char*)malloc(flen);
- memset(out,0,flen);
- int ret = RSA_public_encrypt(flen,in,out,publicKey,RSA_NO_PADDING);
- if(ret<0){
- printf("putlic Encrypt error.\n");
- return NULL;
- }
- BIO_free(bio);
- RSA_free(key);
- return out;
- }
复制代码 1) 如果out作为参数,可以free(out)。但out的初始大小无法获取。
2) 如果out作为返回值,则无法free。
有点纠结。 |
|