【发布时间】:2019-09-17 14:16:24
【问题描述】:
我是 python 新手,我正在尝试使用套接字在 python 中创建一个聊天服务器。在我的服务器中,我想加密和解密从客户端发送到服务器的消息。我正在尝试从服务器创建一个密钥,然后将其发送到客户端,但出现此错误:“'function' object is not iterable” .我正在关注本指南:https://riptutorial.com/python/topic/8710/sockets-and-message-encryption-decryption-between-client-and-server。 以下是产生错误的代码:
key_128 = os.urandom(16)
#encrypt CTR MODE session key
en = AES.new(key_128,AES.MODE_CTR,counter = lambda:key_128)
encrypto = en.encrypt(key_128)
这是错误:
Traceback (most recent call last):
File "test.py", line 4, in <module>
en = AES.new(key_128,AES.MODE_CTR,counter = lambda:key_128)
File "C:\Users\Admin\AppData\Local\Programs\Python\Python37\lib\site-packages\Crypto\Cipher\AES.py", line 232, in new
return _create_cipher(sys.modules[__name__], key, mode, *args, **kwargs)
File "C:\Users\Admin\AppData\Local\Programs\Python\Python37\lib\site-packages\Crypto\Cipher\__init__.py", line 79, in _create_cipher
return modes[mode](factory, **kwargs)
File "C:\Users\Admin\AppData\Local\Programs\Python\Python37\lib\site-packages\Crypto\Cipher\_mode_ctr.py", line 366, in _create_ctr_cipher
_counter = dict(counter)
TypeError: 'function' object is not iterable
我尝试在 python 2.7 上运行本指南,它运行正常。但我在 python 3 上运行它有错误。有人可以解释原因并帮我解决这个问题吗?
更新:
- 我正在使用
pycryptodome而不是Pycrypto,因为我无法在我的电脑上安装 Pycrypto。 - 我做了一些研究如何解决这个问题。有一个链接说错误是由 lib 中的 python-crypto 和 local/lib 之间的冲突引起的……但我不认为是这样。这是链接https://github.com/nccgroup/Winpayloads/issues/21
【问题讨论】:
-
当您在 Google 上搜索该错误消息时,您发现了什么?
-
请在问题正文中包含错误的完整回溯。
-
抱歉信息不足。我已经更新了我能找到的所有内容
标签: python python-3.x aes pycrypto