Я использую алгоритм DES, который я нашел в Интернете. Он работает нормально, но у меня проблема. Как вы знаете, DES шифрует/расшифровывает блоки по 64 байта каждый. Но что произойдет, если в большом файле последний блок не заканчивается на границе 64-байтового блока? Я знаю, были бы ошибки.DES шифрование/дешифрование
Я использую следующий код:
Des d1;
char *plaintext=new char[64];
char *chyphertext=new char[64];
h.open("requisiti.txt",ios::in|ios::binary);.
k.open("requisiti2.txt",ios::out|ios::binary);
while(!h.eof())
{
h.read(plaintext,64);
chyphertext=d1.Encrypt(plaintext);
//decryption is the same.just change Encrypt to Decrypt
k.write(chyphertext,64);
}
h.close();
k.close();
remove("requisiti.txt");
rename("requisiti2.txt","requisiti.txt");
Так мне нужно решение, как «прокладка», но я не знаю, простой алгоритм для него. Пожалуйста, помогите мне зашифровать/дешифровать файл в хорошем смысле.
Непонятно, что вы просите ... не так ли, что вы не понимаете, что такое заполнение?(Просто добавьте 00 байт, чтобы доставить вас до границы 64 байта до шифрования, и помните, что их необходимо удалить после дешифрования - так что сохраните значение «исходного размера» с зашифрованными данными), или это то, что вы ищете для кого-то, чтобы написать свой код для вас (в этом случае переполнение стека не является местом, чтобы найти это)? – mah
Я знаю, что такое padding..but, я не знаю, какой алгоритм для прокладки. Перед отправкой моего вопроса я искал «ответ» на stackoverflow.com, но ничего не помог мне. Так что я спросил напрямую. Я новичок, поэтому я знаю основы более или менее. Также пробовал использовать алгоритм Google pad, но обычно они отправляют меня на crypto ++ или что-то в этом роде. надеюсь, у тебя это получилось. спасибо в любом случае – gAeT
Размер блока DES - 64 * бит *, а не байты. –