Описание тега pycryptodome

Вопросы по использованию пакета PyCryptodome Python в программировании. PyCryptodome - это автономный пакет Python низкоуровневых криптографических примитивов. Это ответвление проекта PyCrypto, которое призвано заменить его, поскольку PyCrypto больше не поддерживается. Пакет содержит широкий набор безопасных хэш-функций и различных алгоритмов шифрования, а также обеспечивает поддержку случайной генерации.

О PyCryptodome

PyCryptodome - это автономный пакет Python низкоуровневых криптографических примитивов, созданный как форк PyCrypto.

PyCryptodome предоставляет почти тот же API, что и старый PyCrypto, поэтому большинство приложений будет работать без изменений. См. Эту страницу официального сайта для получения более подробной информации.

Он поддерживает Python 2.6 или новее, все версии Python 3 и PyPy.

Официальные ресурсы

Установка

Из репозитория PyCryptodome:

Процедура установки зависит от того, в
каком пакете должна находиться библиотека. PyCryptodome можно использовать как:

  • почти незаменимая замена старой библиотеки PyCrypto.
    Вы устанавливаете его с помощью:

    pip install pycryptodome   
    

    В этом случае все модули устанавливаются под Cryptoпакет. Следует избегать одновременной установки PyCrypto и PyCryptodome, поскольку они будут мешать друг другу.

    Поэтому этот вариант рекомендуется только в том случае, если вы уверены, что
    все приложение развернуто вvirtualenv.

  • библиотека, независимая от старого PyCrypto. Вы устанавливаете его с помощью::

    pip install pycryptodomex   
    

    В этом случае все модули устанавливаются под Cryptodomeпакет. PyCrypto и PyCryptodome могут сосуществовать.

Для более быстрых операций с открытым ключом в Unix вам следует установить GMP в вашей системе.

Отличия от PyCrypto

Из репозитория PyCryptodome:

Он содержит следующие улучшения по сравнению с последней официальной версией PyCrypto (2.6.1):

  • Режимы аутентифицированного шифрования (GCM, CCM, EAX, SIV, OCB)
  • Ускоренный AES на платформах Intel через AES-NI
  • Первоклассная поддержка PyPy
  • Криптография эллиптических кривых (только кривая NIST P-256)
  • Более качественный и компактный API (nonce а также iv атрибуты для шифров, автоматическое создание случайных одноразовых идентификаторов и IV, упрощенный режим шифрования CTR и многое другое)
  • SHA-3 (включая SHAKE XOF), SHA-512/t и алгоритмы хеширования BLAKE2
  • Потоковые шифры Salsa20 и ChaCha20
  • scrypt и HKDF
  • Детерминированный (EC)DSA
  • Контейнеры ключей PKCS#8, защищенные паролем
  • Схема секретного обмена Шамиром
  • Случайные числа поступают непосредственно из ОС (а не из CSPRNG в пользовательском пространстве)
  • Упрощенный процесс установки, включая улучшенную поддержку Windows
  • Более чистая генерация ключей RSA и DSA (в основном на основе FIPS 186-4)
  • Основные доработки и упрощение кодовой базы

PyCryptodome не является оболочкой для отдельной библиотеки C, такой как OpenSSL. В максимальной степени алгоритмы реализованы на чистом Python. Только те части, которые чрезвычайно важны для производительности (например, блочные шифры), реализованы как расширения C.