我尝试在python 3中实现AES算法。虽然实现了这个,我在ord()函数中发现了一个错误。我只是尝试将代码从python 2.3转换为python 3.我如何修复错误? 我的代码行是:
key = map(ord, key)
提前致谢
答案 0 :(得分:1)
您的密钥变量已经是bytes
对象(Py2中的str
)。在Py2中,str
是一个长度为1 str
的序列,因此您需要ord
转换为int
的序列。
在Py3中,bytes
个对象是int
的序列,从0到255(包括0和255)。基本上,在Python 2中,您需要map(ord, key)
将str
转换为list
的序列(int
),在Python 3中,您不需要执行转换完全除非您需要改变序列,即便如此,您只需执行bytearray(key)
制作原始bytes
的可变副本。
请注意,Py2.6 +具有bytearray
类型,其行为与Py3(int
s的可变序列)中的行为相同,因此您可能会编写2/3可移植代码只需在任何地方使用bytearray(key)
(并且它将比map(ord, key)
更快启动)。