gpt4 book ai didi

python - PyCryptodome 的 RSA 加密问题

转载 作者:太空宇宙 更新时间:2023-11-03 20:04:25 29 4
gpt4 key购买 nike

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

客户端生成其 RSA key 并将公共(public) key 发送到服务器:

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)

服务器获取私钥并使用它来加密 session 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 对象发送到服务器是错误的,不是吗?/p>

最佳答案

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

关于python - PyCryptodome 的 RSA 加密问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59053227/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com