我是使用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),此填充不再可用.从PKCS#1 v2.0开始,建议将OAEP用于加密,并将PSS用于签名. PyCrypto支持OAEP / PSS和PKCS#1 v1.5填充.