2013-12-10 4 views
0

Не имеет значения, как я точно шифрую и декодирую файлы. Я работаю с файлом как char массив, все почти нормально, пока я не получу файл, размер которого не делит на 8 байт. Потому что я могу зашифровать и декодировать файл каждые 8 ​​байтов из-за особых качеств алгоритма (размер блока должен быть 64 бит).Как правильно работать с файлом при кодировании и декодировании?

Итак, например, я столкнулся с .jpg и попробовал просто добавить пробелы в конец файла, файл результатов не может быть открыт (из .cxt файлов ничего плохого не произойдет).

Есть ли какой-либо выход здесь?

Если вы хотите получить информацию об алгоритме http://en.wikipedia.org/wiki/GOST_(block_cipher).

UPD: Я не могу сохранить, сколько байтов было добавлено, поскольку исходный файл можно удалить или переместить. И, что мы должны делать, мы знаем только ключ и зашифрованный файл.

+4

Добавьте отступы до тех пор, пока файл не будет иметь нужный размер и не запомните, сколько вы заполнили. – this

+2

Что вы подразумеваете под «начальным может быть удалено или перемещено» – Michael

ответ

1

Вам нужно заполнить. Лучший способ сделать это - использовать PKCS#7.

Однако ГОСТ не очень хорош, лучше использовать AES-CBC. Существует аналогичный discussion в «python-channel».

+1

Забота о том, чтобы «лучше использовать AES-CBC»? [Wikipedia] (http://en.wikipedia.org/wiki/GOST_ (block_cipher)) имеет следующее утверждение (не уверен, что оно правильно): по состоянию на декабрь 2012 года наиболее известная атака на ГОСТ (2^{101}) находится на одном уровне с самой известной атакой (2^{100}, основанной на другой слабости, отмеченной Николя Куртуа) на широко используемом Advanced Encryption Standard. – Bobrovsky

+0

Просто чтобы процитировать Википедию: «Существует много опубликованного криптоанализа по ГОСТу, но беглый взгляд говорит, что он кажется безопасным». и «Николя Куртуа» даже назвал «глубоко ошибочным шифром». Криптография - действительно сложное поле, AES - самый анализируемый алгоритм, который мы имеем сегодня, и все же некоторые люди не доверяют ему полностью. Как вы можете доверять тому, что не было полностью проанализировано? – smeso

+0

Также, если вы полностью прочитали статью, которую вы связали, вы найдете другую причину, почему она не «настолько хороша». – smeso