python 3';功能';对象是不可编辑的
我是python新手,我正在尝试使用socket在python中创建聊天服务器。在我的服务器中,我想对从客户端发送到服务器的消息进行加密和解密。我试图从服务器创建一个密钥,然后将其发送到客户端,但出现以下错误:“'function'对象不适用”。我遵循以下指南:。 以下是生成错误的代码:python 3';功能';对象是不可编辑的,python,python-3.x,aes,pycrypto,Python,Python 3.x,Aes,Pycrypto,我是python新手,我正在尝试使用socket在python中创建聊天服务器。在我的服务器中,我想对从客户端发送到服务器的消息进行加密和解密。我试图从服务器创建一个密钥,然后将其发送到客户端,但出现以下错误:“'function'对象不适用”。我遵循以下指南:。 以下是生成错误的代码: key_128 = os.urandom(16) #encrypt CTR MODE session key en = AES.new(key_128,AES.MODE_CTR,counter = lambda
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
回溯(最近一次呼叫最后一次):
文件“test.py”,第4行,在
en=AES.new(图例128,AES.MODE\U CTR,计数器=lambda:图例128)
文件“C:\Users\Admin\AppData\Local\Programs\Python37\lib\site packages\Crypto\Cipher\AES.py”,第232行,新格式
返回\u创建\u密码(sys.modules[\uuuuuuuu name\uuuuuuuuu],key,mode,*args,**kwargs)
文件“C:\Users\Admin\AppData\Local\Programs\Python\Python37\lib\site packages\Crypto\Cipher\\uuuuu init\uuuuuu.py”,第79行,在\u create\u Cipher中
返回模式[模式](工厂,**kwargs)
文件“C:\Users\Admin\AppData\Local\Programs\Python37\lib\site packages\Crypto\Cipher\\u mode\u ctr.py”,第366行,位于\u create\u ctr\u Cipher中
_计数器=dict(计数器)
TypeError:“函数”对象不可编辑
我试着在Python2.7上运行这个指南,它运行正常。但我在Python3上运行,它有错误。有人能解释一下原因并帮我解决这个问题吗
更新:
- 我正在使用
而不是pycryptome
,因为我无法在电脑中安装PycryptoPycrypto
- 我做了一些研究如何解决这个问题。有一个链接说这个错误是由库中的python加密和local/lib之间的冲突引起的。。。但我不这么认为。这里是链接
在此上下文中,
counter
是一个,但不是Crypto.Util.counter
的实例。给定key\u 128=os.uradom(16)
-key\u 128
是一个字符串。当您在谷歌上搜索该错误消息时,您发现了什么?请在问题正文中包含该错误的完整回溯。抱歉,缺少信息。我已经更新了我能找到的所有东西谢谢你,我现在明白多了一点。但是为什么在Python2中这段代码仍然可以运行呢?如果这段代码不正确,它应该不能运行run@sonduong它也不能在Python2中运行,除非AES库具有与Python2完全不同的构建和内部API。