首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PyCryptodome加密的问题

使用PyCryptodome加密的问题
EN

Stack Overflow用户
提问于 2019-11-26 14:32:43
回答 2查看 935关注 0票数 1

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

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

代码语言:javascript
复制
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)

服务器获取私钥并使用它加密会话密钥:

代码语言:javascript
复制
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异常,其消息如下:

代码语言:javascript
复制
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对象是错误的,不是吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-12 10:08:10

实际上,通信协议中有一个错误:我没有注意到服务器收到了第二条消息,并试图使用它创建一个RsaKey。现在一切都很好(我发布的代码)。感谢您的有益反馈。

票数 0
EN

Stack Overflow用户

发布于 2019-11-27 00:10:27

我所读到的所有内容都与您的代码一致,并且您与示例匹配得很好。

解决问题的下一步是验证发送的数据与接收的数据匹配。开始查看发送到import_key()的数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59053227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档