Python3 OpenSSL 的 RSA_public_decrypt() 绑定

3 投票
2 回答
958 浏览
提问于 2025-04-18 00:26

有没有在Python 3.4中可以使用的openssl绑定,能够调用libopenssl里的RSA_public_decrypt()这个函数,让我们可以用公钥来解密东西?我在一个项目中需要这样做,出于某种原因。

2 个回答

1

你试过 M2Crypto 这个库吗?看起来 M2Crypto.RSA.RSA 这个类里面有一个 public_decrypt(self, data, padding) 的函数。M2Crypto 是一个用 Python 写的 OpenSSL 的封装,但我不太确定这个 public_decrypt 函数是不是直接调用了 C 语言的 OpenSSL 里的 RSA_public_decrypt() 函数。如果你选择这个方法的话,我建议你再仔细检查一下源代码,确保没问题。

http://www.heikkitoivonen.net/m2crypto/api/

2

我也遇到过同样的问题,我找到了一种稍微有点“黑科技”的解决办法(注意那些 *.hazmat.* 的导入)

def do_decrypt_cryptography(message, private_key):
    from cryptography.hazmat.primitives import hashes
    from cryptography.hazmat.primitives.asymmetric import padding
    return private_key.decrypt(message,
                               padding.OAEP(mgf=padding.MGF1(algorithm=hashes.SHA1()),
                                            algorithm=hashes.SHA1(),
                                            label=None))

撰写回答