suchen

Heim  >  Fragen und Antworten  >  Hauptteil

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

黄舟黄舟2784 Tage vor814

Antworte allen(1)Ich werde antworten

  • 巴扎黑

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

    Antwort
    0
  • StornierenAntwort