【发布时间】:2012-08-31 22:44:59
【问题描述】:
我正在尝试使用外部站点使用 Python M2Crypto 的 RSA 提供给我的公钥对消息进行编码。本质上,我正在做这样的事情:
from M2Crypto import RSA
import os
rsa = RSA.load_pub_key(os.path.join(BASE_PATH, 'external_site.pem'))
rsa_result = rsa.public_encrypt(message, 3).encode('base64')
如果我在加密时不使用填充,则会收到错误消息:
RSAError: data too small for key size
我了解为什么消息长度(RSA 加密的模数)有上限,但我不明白为什么会有下限。有人可以解释一下或指出正确的方向来解决吗?
【问题讨论】:
-
我猜你没有使用填充。
-
没错,对于这个问题,我没有使用填充。这也更多是关于对 RSAError 的理解,而不是加密是否安全。
-
您可能需要以某种方式告诉您的 API 使用 OAEP 填充。如果您使用填充,错误可能会消失。不填充消息长度可能需要等于模数长度。但是不使用填充有严重的安全问题,所以除非你真的知道自己在做什么,否则不要这样做。
-
CodesInChaos,如果你发布你的答案,我会关闭这个问题。
-
我无法发布完整的答案,因为我不知道有问题的语言/库。只需根据我的评论,用你用来修复它的代码自己写一个完整的答案。
标签: python encryption rsa m2crypto