Среди сторонних разработок можно найти множество свободно доступных инструментов шифрования, включая популярный набор инструментов Python Cryptography Toolkit, известный также как PyCrypto. Этот пакет содержит модули, реализующие алгоритмы шифрования с открытым и закрытым ключом, такие как AES, DES, IDEA и RSA, предоставляет модуль Python для чтения и расшифровывания файлов PGP и многие другие. Ниже приводится пример использования шифрования по алгоритму AES после установки PyCrypto в Windows на моем компьютере:
> >> from Crypto.Cipher import AES
> >> AES.block_size = 16
> >> mykey = ‘pymailcgi‘.ljust(16, ‘-‘) # ключ должен быть 16, 24 или 32 байта
> >> mykey
‘pymailcgi— ‘
>>>
> >> password = ‘Already got one.’ # длина должна быть кратна 16
> >> aesobj1 = AES.new(mykey, AES.MODE_ECB)
> >> cyphertext = aesobj1.encrypt(password)
> >> cyphertext
‘\xfez\x95\xb7\x07_"\xd4\xb6\xe3r\x07g~X]’
>>>
> >> aesobj2 = AES.new(mykey, AES.MODE_ECB)
> >> aesobj2.decrypt(cyphertext)
‘Already got one.’
Этот интерфейс напоминает интерфейс модуля rotor, но в нем используются более совершенные алгоритмы шифрования. Алгоритм AES — это популярный алгоритм шифрования с закрытым ключом. Он требует наличия ключа фиксированной длины и строку данных с длиной кратной 16 байтам.
К сожалению, этот пакет не является частью стандартной библиотеки Python, его распространение в двоичной форме может регулироваться законом США (и других стран) о контроле за экспортом, а описание его — это слишком большая и сложная тема для этой книги. Все это делает его не таким универсальным, как хотелось бы. По крайней мере, распространение двоичной программы установки вместе с примерами этой книги может оказаться не совсем законным. А поскольку шифрование данных является одной из базовых потребностей PyMailCGI, зависимость от внешнего инструмента может оказаться слишком сильной.
Однако самый главный фактор, препятствующий использованию Py- Crypto в этой книге, заключается в том, что этот пакет поддерживает только Python 2.X и пока еще не вышла версия для Python 3.X. Это обстоятельство делает невозможным использование пакета в примерах для данной книги. Однако, если у вас появится возможность установить пакет PyCrypto и разобраться в нем, это может стать мощным решением проблемы. Дополнительную информацию о PyCrypto ищите в Интернете.
Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, II том, 2011