3DES з DEC (Збірник шифрування Delphi) - Сторінка 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. прокладка No1
// вхід = 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;
Темп: Рядок;
почати
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 ^^
на початку був швидко перевантажений, тому що в прикладах було дуже багато, і мені було важко відфільтрувати те, що мені потрібно
але коли у вас є перспектива, ОВК стає просто приголомшливим
а якщо ви пропустите весь Memo1.Lines.Add, це 10-рядовий код для шифрування за допомогою 3DES і для негайного дешифрування негайно
процедура TForm1.Button1Click (Відправник: TObject);
змінний
DefCipherClass: TCipher_2DES;
Темп: Рядок;
почати
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