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

PyCrypto - Python Cryptography Toolkit - это пакет, который содержит различные криптографические модули для языка программирования Python.

Предупреждение: PyCrypto, похоже, больше не поддерживается

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

О PyCrypto

На странице PyCrypto PyPi:

Это набор как безопасных хэш-функций (таких как SHA256 и RIPEMD160), так и различных алгоритмов шифрования (AES, DES, RSA, ElGamal и т. Д.). Пакет структурирован, чтобы упростить добавление новых модулей.

И из репозитория PyCrypto GitHub:

Одно из возможных применений модулей - создание безопасных инструментов администрирования. Другое приложение - написание демонов и серверов. Клиенты и серверы могут шифровать данные, которыми обмениваются, и взаимно аутентифицировать себя; демоны могут шифровать личные данные для дополнительной безопасности. Python также предоставляет приятную основу для создания прототипов и экспериментов с криптографическими алгоритмами; Благодаря целым числам произвольной длины алгоритмы с открытым ключом легко реализуются.

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

Установка

Как предлагает страница PyCrypto PyPi, простой способ установить PyCrypto - использовать следующую команду.

pip install pycrypto

Примеры

Из репозитория PyCrypto GitHub:

Пример использования модуля SHA256:

>>> from Crypto.Hash import SHA256
>>> hash = SHA256.new()
>>> hash.update('message')
>>> hash.digest()
'\xabS\n\x13\xe4Y\x14\x98+y\xf9\xb7\xe3\xfb\xa9\x94\xcf\xd1\xf3\xfb"\xf7\x1c\xea\x1a\xfb\xf0+F\x0cm\x1d'

Пример использования алгоритма шифрования (в данном случае AES):

>>> from Crypto.Cipher import AES
>>> obj = AES.new('This is a key123', AES.MODE_CBC, 'This is an IV456')
>>> message = "The answer is no"
>>> ciphertext = obj.encrypt(message)
>>> ciphertext
'\xd6\x83\x8dd!VT\x92\xaa`A\x05\xe0\x9b\x8b\xf1'
>>> obj2 = AES.new('This is a key123', AES.MODE_CBC, 'This is an IV456')
>>> obj2.decrypt(ciphertext)
'The answer is no'