3DES с DEC (Delphi Encryption Compendium) - Страница 2 - Delphi-PRAXiS
правилно е

По-скоро съм на загуба, приключих с работата си, но все пак бих искал да я разреша правдоподобно, ако някога трябва да се върна на DEC и 3DES
AW: 3DES с DEC (Компендиум за криптиране на Delphi)
Трябва да вземете CBC, но използвайте cmCBCx като режим.
Може би има проблеми с това
AW: 3DES с DEC (Компендиум за криптиране на Delphi)
И както казах, също го реших с подплънката, ако последният блок не е пълен
но алгоритъмът прави 8 байта боклук, след това 248 байта всичко е страхотно и след това отново периодични глупости
Може да се дължи на моята програма, но не съм направил нищо забележимо с огъване на показалеца или нещо друго
AW: 3DES с DEC (Компендиум за криптиране на Delphi)
добре, пепел над главата ми * патица *. намери грешка, входният буфер беше само 256 байта. и четенето на файла беше повредено
но първите 8 байта все още са нелогични
Регистриран от: 11 октомври 2003 г.
Местоположение: Флоренция на Елба
36 983 публикации
AW: 3DES с DEC (Компендиум за криптиране на Delphi)
AW: 3DES с DEC (Компендиум за криптиране на Delphi)
има "вектор на инициализация"
и по някакъв начин се пълни, ако не го спомена
вече са го задали на # 0 # 0 # 0 # 0 # 0 # 0 # 0 # 0 и сега може да се прочете и първият блок
използва DECUtil, DECCipher, DECFmt;
// CrypTool подплата в CBC с броя на подложките.
// така напр. # 4 # 4 # 4 # 4, когато 4 са попълнени
// С CBC размерът на блока се разширява до/с 8.
// вход = 15 байта, изход = 16. подплата # 1
// вход = 16, изход = 24. подплата # 8 # 8 # 8 # 8 # 8 # 8 # 8 # 8
// Инициализираме IV с 8 по 0, в противен случай първият блок е боклук # 0 # 0 # 0 # 0 # 0 # 0 # 0 # 0
процедура TForm1.Button1Click (Изпращач: TObject);
вар
DefCipherClass: TCipher_2DES;
Temp: String;
започнете
DefCipherClass: = TCipher_2DES.Create;
DefCipherClass.Mode: = cmCBCx;
Temp: = 'AAAAAAAAAAAAAAAA';
DefCipherClass.Init (Temp, # 0 # 0 # 0 # 0 # 0 # 0 # 0 # 0); // задаване на парола и IV
Memo1.Lines.Add (IntToStr (Length (Temp)) + ':' + Temp);
Memo1.Lines.Add (TFormat_HEX.Encode (Temp));
// нашето съобщение + подложка, така че да стигнем до размер 8 на блока
Temp: = '123456789012345' + # 1;
Memo1.Lines.Add (IntToStr (Length (Temp)) + ':' + Temp);
Memo1.Lines.Add (TFormat_HEX.Encode (Temp));
Temp: = DefCipherClass.EncodeBinary (Temp); // криптиране
Memo1.Lines.Add (IntToStr (Length (Temp)) + ':' + Temp);
Memo1.Lines.Add (TFormat_HEX.Encode (Temp));
Temp: = DefCipherClass.DecodeBinary (Temp); // дешифриране
Memo1.Lines.Add (IntToStr (Length (Temp)) + ':' + Temp);
Memo1.Lines.Add (TFormat_HEX.Encode (Temp));
// Сега подложката трябва да бъде премахната
сега съм изненадан колко лесно беше с DEC ^^
беше бързо претоварен в началото, защото имаше толкова много в примерите и ми беше трудно да филтрирам това, от което се нуждаех
но след като имате перспектива, DEC е просто страхотно
и ако пропуснете целия Memo1.Lines.Add, това е код от 10 реда за криптиране с 3DES и за незабавно повторно дешифриране
процедура TForm1.Button1Click (Изпращач: TObject);
вар
DefCipherClass: TCipher_2DES;
Temp: String;
започнете
DefCipherClass: = TCipher_2DES.Create;
DefCipherClass.Mode: = cmCBCx;
DefCipherClass.Init ('AAAAAAAAAAAAAAAA', # 0 # 0 # 0 # 0 # 0 # 0 # 0 # 0); // задаване на парола и IV
Temp: = '123456789012345' + # 1; // текст + подложка
Temp: = DefCipherClass.EncodeBinary (Temp); // криптиране
DefCipherClass.Done; // почисти
Temp: = DefCipherClass.DecodeBinary (Temp); // дешифриране
// Сега подложката трябва да бъде премахната
DefCipherClass.Free;
край;
това вече е 100% съвместимо с CrypTool