Реализация AES на Python, Windows - PullRequest
2 голосов
/ 23 августа 2011

У меня возникли проблемы с шифрованием и дешифрованием данных между сервером и клиентским приложением, которое я разрабатываю.Я использую реализацию AES, используя скрипт, который можно загрузить здесь на birth-online.de .

Реализация работает очень хорошо, когда я пытаюсь кодировать или декодировать данные намой сервер 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, но не могу найти ничего полезного в отношении этого исключения.Я использую Python 3.2.1 на моей тестовой машине Windows (x64), и мой сервер Ubuntu работает на Python 2.6.5.(Между прочим, может ли версия изменить ситуацию?)

Заранее спасибо!Роберт

Ответы [ 2 ]

2 голосов
/ 24 августа 2011

Я бы попробовал использовать PyCrypto, я использую его в моем текущем проекте, и он работал очень хорошо. Вы можете узнать больше об этом ниже:

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

0 голосов
/ 24 августа 2011

Я не знаю всего AES.py, но первый взгляд на вашу ошибку говорит о том, что этот пакет не готов к Python 3.

Кажется, что проблема заключается в "реальном делении" в Python 3. Когда вы делаете Nk = len(key)/4 в Python 3, возвращаемое значение - это число с плавающей точкой, а не int. Чтобы сделать это целочисленным делением, необходимо добавить дополнительную косую черту, Nk = len(key) // 4.

Вы можете исправить AES.py или использовать PyCrypto, который намного лучше с точки зрения производительности.

...