首页 新闻 会员 周边 捐助

RSA加密后密文长度有时等于公钥长度128,有时候不等于,什么原因啊,加密代码如下:

0
悬赏园豆:15 [已解决问题] 解决于 2016-10-19 15:38

char *my_encrypt(char *str, char *pubkey_path)
{
// 打开公钥文件
FILE* pub_fp=fopen(PUBKEY,"r");
if(pub_fp==NULL){
printf("failed to open PUBKEY file %s!\n", PUBKEY);
return ;
}
// 从文件中读取公钥
RSA* rsa1=PEM_read_RSA_PUBKEY(pub_fp, NULL, NULL, NULL);
if(rsa1==NULL)
{
printf("unable to read public key!\n");
return ;
}

fclose(pub_fp);
printf("strlen(str): %d\n",strlen(str));
printf("RSA_size(rsa1): %d\n",RSA_size(rsa1));

char *encrypted=NULL;
encrypted = (char *)malloc(1024);
memset(encrypted, 0, 1024);
// 用公钥加密
int len=RSA_public_encrypt(strlen(str), str, encrypted, rsa1, RSA_PKCS1_PADDING);
if(len==-1 )
{
printf("failed to encrypt\n");
return ;
}
return encrypted;
}

问题补充:

大神们快来啊,啊啊啊啊啊

life清者自清的主页 life清者自清 | 初学一级 | 园豆:76
提问于:2016-10-13 14:52
< >
分享
最佳答案
0

所以是要填充的.

收获园豆:15
吴瑞祥 | 高人七级 |园豆:29449 | 2016-10-13 15:06

RSA_PKCS1_PADDING这个不就代表填充了吗

life清者自清 | 园豆:76 (初学一级) | 2016-10-13 15:10

怎么解决啊,大哥

life清者自清 | 园豆:76 (初学一级) | 2016-10-13 16:04

@life清者自清: 填充好像是有区别的.不知道你这个方法的用法.你查下API文档吧.

吴瑞祥 | 园豆:29449 (高人七级) | 2016-10-13 16:37

@吴瑞祥: ...就三种

life清者自清 | 园豆:76 (初学一级) | 2016-10-13 17:52
其他回答(1)
0

https://q.cnblogs.com/q/87207/

life清者自清 | 园豆:76 (初学一级) | 2016-10-17 17:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册