Вам не нужны PyCrypto
или PyMe
, хорошо, хотя эти пакеты могут быть - у вас возникнут всевозможные проблемы при сборке под Windows. Вместо этого, почему бы не избежать кроличьей норы и сделать то, что я сделал? Используйте gnupg 1.4.9
. Вам не нужно выполнять полную установку на компьютерах конечных пользователей - достаточно всего лишь gpg.exe
и iconv.dll
из дистрибутива, и вам просто нужно иметь их где-то в пути или получить доступ из вашего кода Python, используя полный путь к файлу. Никаких изменений в реестре не требуется, и все (исполняемые файлы и файлы данных) можно ограничить одной папкой, если хотите.
Есть модуль GPG.py
, который был изначально написан Эндрю Кучлингом, улучшен Ричардом Джонсом и улучшен Стивом Трауготтом. Он доступен здесь , но, как есть, он не подходит для Windows, потому что он использует os.fork()
. Хотя изначально часть PyCrypto
, полностью независима от других частей PyCrypto
, для работы .
требуется только gpg.exe / iconv.dll.
У меня есть версия (gnupg.py
), полученная из GPG.py
Трауготта, в которой используется модуль subprocess
. Он отлично работает под Windows, по крайней мере, для моих целей - я использую его для следующих целей:
- Управление ключами - генерация, листинг, экспорт и т. Д.
- Импорт ключей из внешнего источника (например, открытые ключи, полученные от компании-партнера)
- Шифрование и дешифрование данных
- Подпись и проверка подписей
Модуль, который у меня есть, не идеален для показа сейчас, потому что он включает в себя некоторые другие вещи, которых там быть не должно - что означает, что я не могу выпустить его как есть в данный момент. В какой-то момент, возможно, в ближайшие пару недель, я надеюсь, что смогу привести его в порядок, добавить еще несколько юнит-тестов (например, у меня нет юнит-тестов для подписи / проверки) и выпустить их (либо в оригинальная PyCrypto
лицензия или аналогичная коммерчески доступная лицензия). Если вы не можете ждать, перейдите с модулем Traugott и измените его самостоятельно - его работа с модулем subprocess
была не слишком большой.
Этот подход был намного менее болезненным, чем другие (например, решения, основанные на SWIG
, или решения, требующие сборки с MinGW
/ MSYS
), которые я рассмотрел и экспериментировал. Я использовал тот же (gpg.exe
/ iconv.dll
) подход с системами, написанными на других языках, например C#
, с одинаково безболезненными результатами.
P.S. Он работает с Python 2.4, а также с Python 2.5 и более поздними версиями. Не тестировался с другими версиями, хотя проблем не предвидится.