我在开发的服务器和客户机应用程序之间遇到了一些加密和解密数据的问题。我使用的是AES实现,使用的脚本可以下载here at birth-online.de。在
当我试图在我的ubuntu10.04服务器上对数据进行编码或解码时,这个实现工作得很好。但是,在Windows下尝试使用脚本时,我遇到了以下异常:
>>> aes.encrypt("Test", "Test", 256)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "aes.py", line 148, in encrypt
key = Cipher(pwBytes, KeyExpansion(pwBytes))
File "aes.py", line 112, in KeyExpansion
w = [0] * Nb*(Nr+1)
TypeError: can't multiply sequence by non-int of type 'float'
有没有人知道到底出了什么问题,怎么解决?我已经搜索过谷歌,但似乎找不到任何关于这个例外的有用信息。我在我的Windows(x64)测试机器上使用python3.2.1,我的Ubuntu服务器运行python2.6.5。(顺便说一句,这个版本能改变这里吗?)在
提前谢谢! 罗伯特
我不知道全部AES.py公司但是第一眼看到您的错误,就会发现这个包还没有准备好用于Python3。在
在Python3中,问题似乎是“真正的除法”。在python3中执行
Nk = len(key)/4
操作时,返回值是一个浮点值,而不是一个整数除法。要使其成为整数除法,必须加上一个额外的斜杠Nk = len(key) // 4
。在你能修好的AES.py公司从性能上讲,py和go的性能要好得多。在
我会尝试使用PyCrypto,我在我当前的一个项目中使用了它,并且效果非常好。您可以在下面了解更多信息:
https://www.dlitz.net/software/pycrypto/
相关问题 更多 >
编程相关推荐