Помощь - Поиск - Пользователи - Календарь
Полная версия: Вопрос с алгоритмом DES
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
Unconnected
Здравствуйте, есть алгоритм шифрования DES, но он шифрует максимум около 8 байт(я могу ошибаться), т.е. бОльшие файлы игнорируются. Насколько я понимаю, нужно составить цепочку из 8-байтных блоков.Возможно,я что-то не так понял? Модуль c примером его использования прилагается.
volvo
Цитата
но он шифрует максимум около 8 байт
Вообще-то DES шифрует информацию 64 битовыми блоками, так что не "максимум", а именно 8 байт...

Цитата
Насколько я понимаю, нужно составить цепочку из 8-байтных блоков
Угу... Читать файл порциями, кратными 8 байтам, что присоединенная программа и делает... Только вот по-моему, у нее есть небольшой недостаток: она будет увеличивать размер файла до размера кратного 8 (если в исходном файле было 53 байта, то после дешифрации станет 56, причем 3 конечных - мусор). Проверить сейчас не могу - TP недоступен, но выглядит программа USE-DES работоспособной... Или она работает некорректно? Тогда расскажи, в чем именно заключается неправильная работа...
Unconnected
USE-DES вполне работоспособна, мне удавалось зашифровать небольшой txt файл.
Unconnected
Проблема в том, что при шифровании "больших" файлов(350 кб например) получаются файлы размером 4 кб.
volvo
Угу... проблема - вот тут:
Цитата
  n:=FileSize(f); { <--- описано как Word, но Word не может хранить размеры больше 64К }
k:=n div Rec; if n mod Rec<>0 then inc(k);
Переделай вот так:

var
f_size: longint;
{
k и i я бы тоже сделал longint-ами, а то мало ли, захочешь
зашифровать файл размером больше 65535*512байт = 32Мб,
опять будет проблема
}

...
f_size := FileSize(f);
k:=f_size div Rec; if f_size mod Rec<>0 then inc(k);
...
Unconnected
Получается, у тебя f_size вместо переменной n? Теперь возникает ошибка 98, F_size должна иметь целочисленный тип.
А если её сделать integer, то такая же песня с 4-мя килобайтами получается(
volvo
Я где-то написал, что вместо? Покажи, где... Я добавил переменную, которая должна выполнять свою функцию: хранить размер файла... Что там у тебя делает N - это другие проблемы, f_size это не касается никаким боком.
Unconnected
Volvo, огромное спасибо. Как репутацию повышать?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.