
Автономная криптографическая библиотека для Python
.. image:: https://github.com/Legrandin/pycryptodome/workflows/Integration%20test/badge.svg :target: https://github.com/Legrandin/pycryptodome/actions
.. image:: https://badge.fury.io/py/pycryptodome.svg :target: https://pypi.org/project/pycryptodome
.. image:: https://badge.fury.io/py/pycryptodomex.svg :target: https://pypi.org/project/pycryptodomex
PyCryptodome — это самодостаточный пакет Python с низкоуровневыми криптографическими примитивами.
Он поддерживает Python 2.7, Python 3.7 и новее, а также PyPy.
Процедура установки зависит от того, в каком пакете вы хотите разместить библиотеку. PyCryptodome можно использовать:
#. в качестве почти прямой замены старой библиотеки PyCrypto. Установка выполняется с помощью::
pip install pycryptodome
В этом случае все модули устанавливаются в пакет Crypto.
Следует избегать одновременной установки PyCrypto и PyCryptodome, так как они будут мешать друг другу.
Поэтому этот вариант рекомендуется только в том случае, если вы уверены, что всё приложение разворачивается в virtualenv.
#. в качестве библиотеки, независимой от старого PyCrypto. Установка выполняется с помощью::
pip install pycryptodomex
В этом случае все модули устанавливаются в пакет Cryptodome. PyCrypto и PyCryptodome могут сосуществовать.
Для более быстрых операций с открытыми ключами в Unix следует установить GMP_ в вашей системе.
PyCryptodome — это форк PyCrypto. Он добавляет следующие улучшения по сравнению с последней официальной версией PyCrypto (2.6.1):
Режимы аутентифицированного шифрования (GCM, CCM, EAX, SIV, OCB, KW, KWP)
Гибридное шифрование с открытым ключом (HPKE)
Ускоренный AES на платформах Intel через AES-NI
Полноценная поддержка PyPy
Криптография на эллиптических кривых (кривые NIST P; Ed25519, Ed448, Curve25519, Curve448)
Более удобный и компактный API (атрибуты nonce и iv для шифров, автоматическая генерация случайных nonce и IV, упрощённый режим шифрования CTR и другое)
Алгоритмы хеширования SHA-3 (FIPS 202) и производные функции (NIST SP-800 185):
KangarooTwelve, TurboSHAKE128 и TurboSHAKE256 XOF
Усечённые алгоритмы хеширования SHA-512/224 и SHA-512/256 (FIPS 180-4)
Алгоритмы хеширования BLAKE2b и BLAKE2s
Поточные шифры Salsa20 и ChaCha20/XChaCha20
Poly1305 MAC
Аутентифицированные шифры ChaCha20-Poly1305 и XChaCha20-Poly1305
Функции формирования ключа scrypt, bcrypt, HKDF и NIST SP 800 108r1 в режиме счётчика (Counter Mode)
Детерминированные (EC)DSA и EdDSA
Защищённые паролем контейнеры ключей PKCS#8
Схема разделения секрета Шамира
Случайные числа получаются напрямую из ОС (а не из CSPRNG в пространстве пользователя)
Упрощённый процесс установки, включая улучшенную поддержку Windows
Улучшенная генерация ключей RSA и DSA (в значительной степени на основе FIPS 186-4)
Значительная очистка и упрощение кодовой базы
PyCryptodome — это не обёртка над отдельной C-библиотекой наподобие OpenSSL. Алгоритмы реализованы на чистом Python в максимально возможной степени. Только те части, которые крайне критичны для производительности (например, блочные шифры), реализованы в виде C-расширений.
Для получения дополнительной информации см. homepage_.
По вопросам безопасности отправляйте письмо на [email protected].
Весь код можно загрузить с GitHub_.
.. _homepage: https://www.pycryptodome.org
.. _GMP: https://gmplib.org
.. _GitHub: https://github.com/Legrandin/pycryptodome