带有PyCryptodome的RSA加密的问题

问题描述 投票:1回答:1

我需要基于PyCryptodome修复客户端/服务器交互。

客户端生成其RSA密钥并将公共密钥发送到服务器:

n_bin_size = 1024
e = 65537
key = RSA.generate(n_bin_size, None, e) # RsaKey object
public_key = key.publickey().exportKey('PEM')
print(str(len(public_key)))
conn.send(public_key)

服务器获取私钥并将其用于加密会话密钥:

data = conn.recv(271).decode()
pub_key = RSA.import_key(data)
session_key = b"key1key1key1key1"
cipher_rsa = PKCS1_OAEP.new(pub_key)
try:
  enc_session_key = cipher_rsa.encrypt(session_key)
except (AttributeError):
  print("Attribute error..")

session_key实际上已正确加密,但是始终会引发AttributeError异常,并显示以下消息:

Traceback (most recent call last):
  File "Bob.py", line 33, in <module>
    enc_session_key = cipher_rsa.encrypt(session_key)
  File "/usr/local/lib/python3.7/site-packages/Cryptodome/Cipher/PKCS1_OAEP.py", line 107, in encrypt
    modBits = Cryptodome.Util.number.size(self._key.n)
AttributeError: 'int' object has no attribute 'n'

是否可以解决此问题?

更新:还有一个类似的问题,位于:

RSA decryption of AES Session key fails with 'AttributeError: 'bytes' object has no attribute 'n'

但是该问题的答案不能解决我的问题。当然,如果我使用“完整” RsaKey对象而不是公共密钥RsaKey对象,则不会引发异常,但是我认为将“完整” RsaKey对象发送到服务器是错误的,不是吗?] >

我需要基于PyCryptodome修复客户端/服务器交互。客户端生成其RSA密钥,并将公用密钥发送到服务器:n_bin_size = 1024 e = 65537密钥= RSA.generate(n_bin_size,...

python encryption rsa pycryptodome
1个回答
0
投票

我阅读的所有内容都与您的代码一致,并且您与示例完全匹配。故障排除的下一步是验证发送的数据是否与接收的数据匹配。开始查看发送到import_key()的数据。

© www.soinside.com 2019 - 2024. All rights reserved.