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

标签 python encryption rsa padding

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

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

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 填充。

关于python - python 为 RSA 模块使用什么类型的填充?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36627518/

相关文章:

java - 从 Bouncy CaSTLe 中的文本创建 RSA 公钥时出现问题

php - PGP 加密 - PHP openssl

python - Flask WTForms 使用变量自动填充 StringField

python - 为什么 5^(4-4) + 9 和 (5^(4-4)) + 9 的结果不同?

python - 为什么基数排序的空间复杂度为 O(k + n)?

php - 将加密 key 从 Laravel 5.2 迁移到 5.3

c++ - 在 C++ 示例中解密 AES

php - 如何使用公共(public) RSA key 验证 JSON Web token ?

python - 将数字列表解析为python中的列表

android - 使用 Android 指纹时出现问题 : IV required when decrypting. 使用 IvParameterSpec 或 AlgorithmParameters 提供