人生最曼妙的风景,竟是内心的淡定与从容!
完全是試出來的結果…首先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(不一定這麼拼),因為之前試過其他庫,這兩種填充模式才能解出來。