84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
人生最曼妙的风景,竟是内心的淡定与从容!
完全是试出来的结果……首先base64的文本要转一下
sign = base64.decodestring(sign)
然后RSA_decrypt的第一个入参错了,应该是:
ret = RSA_private_decrypt(rsa_size, sign, rsa, key, 1)
见官网定义:
int RSA_private_decrypt(int flen, unsigned char *from, unsigned char *to, RSA *rsa, int padding);
这里flen是key长度,之前望文生义以为是from_len。ret>0表示解密成功,结果从rsa.value里取,然后第五个参数是padding的模式,本应该是RSA_PKCS1_PADDING,但是libcrypto.so.6里好像找不到这个常量,我从0到5自己一个个试出来的,估计1是RSA_PKCS1_PADDING,2是SSLV23_PADDING(不一定这么拼),因为之前试过其他库,这两种填充模式才能解出来。
完全是试出来的结果……
首先base64的文本要转一下
然后RSA_decrypt的第一个入参错了,应该是:
见官网定义:
这里flen是key长度,之前望文生义以为是from_len。
ret>0表示解密成功,结果从rsa.value里取,然后第五个参数是padding的模式,本应该是RSA_PKCS1_PADDING,但是libcrypto.so.6里好像找不到这个常量,我从0到5自己一个个试出来的,估计1是RSA_PKCS1_PADDING,2是SSLV23_PADDING(不一定这么拼),因为之前试过其他库,这两种填充模式才能解出来。