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(不一定这么拼),因为之前试过其他库,这两种填充模式才能解出来。