Kiruha01 / Vernams-cipher

🔐 Шифрование файлов с помощью алгоритма Вернама

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Шифр Вернама

Python application

Алгоритм шифрования файлов Алгоритмом Вернама.

Описание алгоритма

Алогоритм использует операцию исключающее ИЛИ (XOR) для шифровки и расшифровки файла.

Шифровка

На вход для шифрования подаётся входной файл и random seed (по желанию). Для каждого байта входного файла генерируется случайный байт, который записывается в отдельный файл-ключ. Далее вычисляется побитовое исключающее ИЛИ (XOR) для этих двух байтов и записывается в выходной файл.

Расшифровка

На вход для расшифровки подаются два файла: зашифрованный файл и файл-ключ. Читается по байту с двух файлов и выполняется операция исключающее ИЛИ (XOR). Результат записывается в выходной файл.

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

У скрипта есть два режима работы: шифрование (encrypt) и дешифрование (decrypt).

Encrypt

Параметр Описание
-i, --input Входной файл, который нужно зашифровать (обязательный)
-o, --output Выходной зашифрованный файл
-k, --key Файл ключа
-s, --seed Random-seed

Если параетры --output или --key не указаны, то соответствующие файлы генерируются автоматически (*.dec и *.dec.key соответственно)

Пример:

$ ./ver.py encrypt -i data [-o data.dec] [-k data.dec.key]

Для шифрования всех файлов в папке, можно указать путь к ней для параметра input. В этом случае желательно указать параметры output и key для распределения ключей от зашифрованных файлов.

$ ./ver.py encrypt -i folder/ [-k keys/] [-o outs]

Decrypt

Параметр Описание
-i, --input Входной файл, который нужно расшифровать (обязательный)
-k, --key Файл ключа
-o, --output Выходной расшифрованный файл

Если параетры --output или --key не указаны, то подразумевается, что файл назван стандартным образом (input - *.dec, key - *.dec.key)

$ ./ver.py decrypt -i data.dec [-o data] [-k data.dec.key]

Аналогично шифрованию можно расшифровывать целые папки:

$ ./ver.py encrypt foo/ -k keys/ -o outs/

About

🔐 Шифрование файлов с помощью алгоритма Вернама


Languages

Language:Python 70.6%Language:Shell 29.4%