巴扎黑2017-04-17 17:03:26
完全是試出來的結果…
首先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(不一定這麼拼),因為之前試過其他庫,這兩種填充模式才能解出來。