python 对 RSA 模块使用什么类型的填充?

What type of padding does python use for RSA module?

我是 Python 加密的新手,我想知道哪个填充是其 RSA module 的默认填充?

我通过以下方式获取密钥并解密数据:

import rsa

(pub, priv) = rsa.newkeys(512)
# receive the encrypted data here
data = rsa.decrypt(encrypt_data, priv)

而据我所知,填充方法包括:RSA_PKCS1_PADDING、RSA_PKCS1_OAEP_PADDING、RSA_SSLV23_PADDING、RSA_NO_PADDING.

rsa module(当前为 v3.4)仅支持 PKCS#1 v1.5 加密填充(随机 2 类填充)和签名。

rsa/__init__.py 中你可以看到 rsa.encrypt() 实际上是 rsa.pkcs1.encrypt() 内部使用 rsa.pkcs1._pad_for_encryption() 这是前面提到的 PKCS#1 v1.5 填充的实现.

请注意,如今 (ref),不应再使用此填充。建议使用 OAEP 进行加密,使用 PSS 进行签名,两者均来自 PKCS#1 v2.0。 PyCrypto 支持 OAEP/PSS 和 PKCS#1 v1.5 填充。