【问题标题】:AES implementation on Python, WindowsPython、Windows 上的 AES 实现
【发布时间】:2011-08-23 18:38:23
【问题描述】:

我在正在开发的服务器和客户端应用程序之间加密和解密数据时遇到了一些麻烦。我正在使用可以下载的脚本here at birth-online.de 使用 AES 实现。

当我尝试在我的 Ubuntu 10.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'

有谁知道到底出了什么问题以及如何解决?我已经搜索过 Google,但似乎找不到任何关于此异常的有用信息。我在我的 Windows (x64) 测试机上使用 Python 3.2.1,而我的 Ubuntu 服务器正在运行 Python 2.6.5。 (顺便说一下,版本在这里会有所不同吗?)

提前致谢! 罗伯特

【问题讨论】:

  • Python 2.x 和 3.x 有很大的不同。我不知道这是否是造成这种特殊差异的原因,但我会说这是主要嫌疑人。
  • 这似乎在 Windows 上的 Python 2.7 中有效。我应该先测试一下。我没那么聪明。但是,仍然应该可以在 Python 3.x 上运行它,因为 2.7 会越来越老,没有新版本可以发布。 2.7 是针对 2.x 发布的最新版本。
  • 大多数软件包都必须针对 python 3 进行更新。这是减缓采用 python 3 的大问题。您可以在pypi.python.org/pypi?:action=browse&c=533&show=all 看到哪些软件包支持 python 3。

标签: python exception encryption python-3.x aes


【解决方案1】:

我会尝试使用 PyCrypto,我在我当前的项目中使用它并且效果很好。您可以在下面了解更多信息:

https://www.dlitz.net/software/pycrypto/

【讨论】:

    【解决方案2】:

    我不知道整个 AES.py,但第一次看你的错误说这个包还没有为 Python 3 准备好。

    问题似乎是 Python 3 中的“真正除法”。当您在 Python 3 中执行 Nk = len(key)/4 时,返回值是浮点数,而不是整数。要使其成为整数除法,必须添加一个额外的斜线,Nk = len(key) // 4

    您可以修复 AES.py,或者使用性能更好的 PyCrypto。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-29
      • 1970-01-01
      • 1970-01-01
      • 2021-01-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多