LINUX.ORG.RU

[C, криптография]


0

0

Пишется небольшая программа по шифрованию файлов.

Из файла считывается BLOCK_SZ байт бинарных данных, шифруются _блочным_ алгоритмом шифрования и записываются в выходной файл.

Соответственно, если длина входного файла не кратна BLOCK_SZ, то последний блок дополняется нулями и уже после этого шифруется. Однако в процессе дешифрования последний блок будет записан в файл вместе с нулями, которыми он был дополнен. Как этого избежать?



Последнее исправление: harvos (всего исправлений: 1)

хранить где-то размер файла (или последнего блока, что проще и надёжнее - всегда знаешь ограничение на размер)

gorilych ★★
()

В первых нескольких байтах выходного файла хранить размер зашифрованного файла.

trex6 ★★★★★
()

1. Используем номер блока как синхропосылку, с ее помощью вырабатываем гамму для этого блока
2. Гамму побитно XORим с исходными данными, в результате у нас отсается ровно столько бит, сколько было данных
Задача решена :-)

no-dashi ★★★★★
()

Часто так делают:

В последнем блоке, если «хвостик» имеет размер от 1 до (BLOCK_SZ-1) байт, один байт (например- последний) отводится под указание того — сколько байт в этом блоке относятся к файлу. Но, что важно, если размер файла - кратен блоку, то все равно нужно добавить блок с указанем что в нем 0 байт относящихся к файлу.

hydraulicbrakefluid
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.