Алгоритм шифрования файлов Алгоритмом Вернама.
Алогоритм использует операцию исключающее ИЛИ (XOR) для шифровки и расшифровки файла.
На вход для шифрования подаётся входной файл и random seed (по желанию). Для каждого байта входного файла генерируется случайный байт, который записывается в отдельный файл-ключ. Далее вычисляется побитовое исключающее ИЛИ (XOR) для этих двух байтов и записывается в выходной файл.
На вход для расшифровки подаются два файла: зашифрованный файл и файл-ключ. Читается по байту с двух файлов и выполняется операция исключающее ИЛИ (XOR). Результат записывается в выходной файл.
У скрипта есть два режима работы: шифрование (encrypt) и дешифрование (decrypt).
Параметр | Описание |
---|---|
-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]
Параметр | Описание |
---|---|
-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/