1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/hfxunlp-pyhcrypt

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

pyhcrypt

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

Использование

Установите с помощью команды pip install pyhcrypt.

Python

Основной API

encrypt(input, password, use_rand=True)

Шифрует input (либо bytes, либо открытый file object) с помощью password (либо bytes, либо str), возвращает результат шифрования (bytes). Если input является открытым file object, эта функция работает как генератор и шифрует по 64 байта за раз, чтобы экономить память.

Если use_rand установлено в True (по умолчанию), 64 случайных байта будут зашифрованы перед обработкой input, и результат шифрования также будет на 64 байта длиннее, чем input. Это помогает защитить password, особенно в случаях, когда input начинается с определённого шаблона.

decrypt(input, passwd, use_rand=True)

Дешифрует input (либо bytes, либо открытый file object) с помощью password (либо bytes, либо str), возвращает результат дешифровки (bytes). use_rand должен соответствовать настройке encrypt.

Пример

Шифрование и дешифровка байтов.

from pyhcrypt import encrypt, decrypt
from os import urandom

bytes_ori = urandom(64)
passwd = "a_password"

bytes_enc = encrypt(bytes_ori, passwd)
bytes_dec = decrypt(bytes_enc, passwd)

print(bytes_ori == bytes_dec)

Шифрование или дешифровка файла.

from pyhcrypt import encrypt, decrypt

def handle(cmd, passwd, srcf, rsf):

    func = decrypt if cmd.find("d") >= 0 else encrypt
    with open(srcf, "rb") as rf, open(rsf, "wb") as wf:
        for _ in func(rf, passwd):
            wf.write(_)

Интерфейс командной строки

Выполните либо

python -m pyhcrypt action password input_file output_file

либо

pyhcrypt action password input_file output_file,

где action может быть либо e (для шифрования), либо d (для дешифровки), password — это пароль, input_file и output_file — соответствующие входной и выходной файлы соответственно. - для стандартного ввода/вывода.

Производительность

Тестирование проводилось на CPython 3.10.4 с использованием одного потока процессора Intel Core M3-7Y30. Несмотря на то что Python медленнее, чем C, эта библиотека всё же обеспечивает скорость шифрования/дешифровки 31,3 МБ/с.

Загадка

Мы шифруем сообщение в кодировке UTF-8 с помощью функции encrypt 16 раз подряд следующим кодом.

from gzip import compress
from pyhcrypt import encrypt

def puzzle(msg, n):

    gz_msg = compress(msg)
    for i in range(n):
        print(encrypt(gz_msg, msg, use_rand=True))

Результаты шифрования следующие.

b'\xdaz>\x9b\xf2s\x84\x08\xc5O\xa7\xe28{\xbe|\xc4\xd77\xac\x98\x96\xb7\xb9\xf8\xcc@\x94\x1b\x06\xbb\xae\x84\xbc\x9e\xcaN\xd6\xc4\xc9\xca\x07 \xa2\xca4\xa4\xf82\xa4*q\x114\xbcW\xe6\x10\xd6\xf8/H\xc0t\xfb\x1d3\xa2\x9d\xa9H\n\xbf\xf8\x90{\x0f\xf3/b|\xe9\x9b\x95\xbd\xb2\x11Ri$)7\xb4\xd8\xdc\x0e+\x9fL<\x1cH\xb4\x01;\x03\xfb{\x1bj\x00gC\xd3\x91\xb4\xd4M\x85\xc72P\x9aI\x86\tlV\xd7\x0e["\xea\xef\xfb\xe5\x8fl 8s\xbc\xf5\xdc?k9\xdd\x96\xe7\xa9QE,6\xfa\x1d\x06\\g(\xa7\x1ew\xddv\xa06\xb6\xf3\xf3\xf2\xbb\x9a@\x0c\x0c\xe9\xaf\xb1;\xed'
b'\xb9C\xca""\x15\x94\xbb\x80\xb0\xc0\xb3\x04h\x1au\xbe?\x16)\x883;\xb8\xa8h\xf2u\xc4\x8a\xd6\x94@\n\xd0Z\xedPu\x045\x87\x91\x9eO\x8c\xb7\xf3O9\xdcW\xeay\x84d\x91v\xeb\x99\xea\x10f\xcd\xc7 k\x91\x8a\xaf)\xe6\xb5\xdd\xf8r76\x9fb\x1d\x8c\x0c\xf6\xc7\x19p\xa1i\x03NA=\xd2&\xff>1a\xf6\x18Wx>p\xf4\xf06=L\xadg\xb5\xfe\x08T,c6]\xf0\x8er_-\x92\x0e\x964\xa1\xf8b\xee\x04\xe4\xf6\xafHM\xf5(-L{K\xa0E\xd9\x87EN\xf3,e\x05\x82E\xe2\xd7p\x08\xabS;U\xfa\xb0\xdd9\x0c\x86D\xb3\xec_\xec\xe1\x15pj.\xe9'
b"x\x8e\x9f\x91\\\x0b\xf2\xc4G,\xe4\x073\x8e\xa3 _\xf0\x87W\xb7R\x19\xe6f\xb9d\xf2\xac\xe4N\\&\x02\x8e$\x1dZ@\xcf\xcb\xe7\xccd\xe8\xcb\x88\x10\xd5v\x08\xa2/\xd2\xf5y\x18_Sz)\xdc>^NM\x92'd\x1c\xb8\xa3|\x00e\xa5\x1fe\xf5\xef,!\xaf2+\xc1\xfcL\xd7_\xd2/\x93\xa3@3|\x0c\xa1\xec\xde\xae\x18\xefY\xabcF\xb9z4 \xba\xf3\x10/\x8f\x85\x04\x18*\x9ay\xb0\xa4\x1e\x96P~[\xc6\xd7\x864\xbf\xdf\xbb\xd4g\x88w\xcd\xf6\x9b\xa4c\x98*E\x9a@\x11\x84p\x1f\x9f\xfb<^g7v\x9c\xd96\x0e\xf6J\x01\x93Ou\xb8\t\x15\xcd\xe9\xed<\x99y\xdc" **Текст запроса:**

b'\x9f\x14\xebRn\xdb\xfe\x8b@(\xdf\x1e&\xada\x80\x91\xba\xa3+\xb7g\x8b!\xe0$\xe3\xd3\xa2\x12c6\x04h\xd6\x03\x83\x89\xb0\xf5;(\xddz\xe5\xfeR\xaf,\xb40\xc8\\TX!(\xd9\x92\xc0\xa0\x9dW\'3\x19n-;\x1c\xdb\xee\x0e\xe3\xb0\x91L9\xbd\x1e\xef\xe9\xb3\xc5\xb6+\xf1\xd26&\xceK\xaa\xa4l\x9e^\xb3!\x0f\x91N,\xb0\x11b"\x85\xc0\xd3\x136xU\x8c\'X\xc5+\xef\xb0~\xc0\xc1\xa3\xe1g/\xb7q\x99M?\x9d\xe0p\xfe\x85\x13\x9e4\x84\xca-\x81\xa4\xd9^\x1a\xfb\xa1\xaa\\\x05z\xc9\x0b\x98\xe1\xfdi\x88\x8fu\xef\xea\xf5\xef\x8f\xf7\xf5bf\x9f\x14\x98r\x8f\xe0\xa4P\xe8'

**Перевод:**

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

Для корректного перевода и понимания текста необходимо предоставить больше информации о его происхождении и назначении.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Простой и безопасный алгоритм шифрования и расшифровки на основе пароля с использованием хеш-функций, реализованный исключительно на Python. Расширить Свернуть
GPL-3.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://gitlife.ru/oschina-mirror/hfxunlp-pyhcrypt.git
git@gitlife.ru:oschina-mirror/hfxunlp-pyhcrypt.git
oschina-mirror
hfxunlp-pyhcrypt
hfxunlp-pyhcrypt
master