Описание тега pycrypto
Предупреждение: PyCrypto, похоже, больше не поддерживается
Похоже, что проект PyCrypto не поддерживается с 2014 года. В течение этих лет разработчики не осуществляют никаких действий в официальном репозитории и не оказывают поддержки по вопросам. Вот почему в этом посте предлагается заменить его библиотекой PyCryptodome, которая по-прежнему создаетCrypto
пакет с почти идентичным API и может использоваться с большинством программ, хотя есть некоторые исключения. Для получения дополнительных сведений о совместимости этих двух пакетов посетите эту страницу.
О PyCrypto
Это набор как безопасных хэш-функций (таких как SHA256 и RIPEMD160), так и различных алгоритмов шифрования (AES, DES, RSA, ElGamal и т. Д.). Пакет структурирован, чтобы упростить добавление новых модулей.
И из репозитория PyCrypto GitHub:
Одно из возможных применений модулей - создание безопасных инструментов администрирования. Другое приложение - написание демонов и серверов. Клиенты и серверы могут шифровать данные, которыми обмениваются, и взаимно аутентифицировать себя; демоны могут шифровать личные данные для дополнительной безопасности. Python также предоставляет приятную основу для создания прототипов и экспериментов с криптографическими алгоритмами; Благодаря целым числам произвольной длины алгоритмы с открытым ключом легко реализуются.
Официальные ресурсы
- Домашняя страница PyCrypto
- Альтернативная домашняя страница PyCrypto
- Документация по PyCrypto API
- PyCrypto Страница PyPi
- Репозиторий PyCrypto GitHub
Установка
Как предлагает страница 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'