搜尋

首頁  >  問答  >  主體

python如何调用libcrypto实现RSA解密?

黄舟黄舟2810 天前826

全部回覆(1)我來回復

  • 巴扎黑

    巴扎黑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(不一定這麼拼),因為之前試過其他庫,這兩種填充模式才能解出來。

    回覆
    0
  • 取消回覆