3DES cu DEC (Delphi Encryption Compendium) - Pagina 2 - Delphi-PRAXiS
e corect

Sunt mai degrabă pierdut, am terminat cu munca mea, dar aș vrea totuși să găsesc o soluție plauzibilă dacă trebuie să mă întorc pe DEC și 3DES
AW: 3DES cu DEC (Delphi Encryption Compendium)
Ar trebui să luați CBC, dar folosiți cmCBCx ca mod.
Poate că există probleme cu asta
AW: 3DES cu DEC (Delphi Encryption Compendium)
Și, așa cum am spus, am rezolvat și asta cu umplutura, dacă ultimul bloc nu este plin
dar algoritmul face gunoi de 8 biți, apoi 248 de biți totul este grozav și apoi din nou prostii periodice
Poate că se datorează programului meu, dar nu am făcut nimic vizibil cu îndoirea indicatorului sau altceva
AW: 3DES cu DEC (Delphi Encryption Compendium)
ok, cenușă peste capul meu * rață *. a găsit o eroare, buffer-ul de intrare avea doar 256 de octeți. iar citirea fișierului a fost coruptă
dar primii 8 octeți sunt încă ilogici
Înregistrat din: 11 octombrie 2003
Locație: Florența pe Elba
36.983 de postări
AW: 3DES cu DEC (Delphi Encryption Compendium)
AW: 3DES cu DEC (Delphi Encryption Compendium)
există un „vector de inițializare”
și cumva se umple dacă nu o menționez
acum l-ați setat la # 0 # 0 # 0 # 0 # 0 # 0 # 0 # 0 și acum poate fi citit și primul bloc
utilizează DECUtil, DECCipher, DECFmt;
// Umplerea CrypTool la CBC cu numărul de umplere.
// deci de ex. # 4 # 4 # 4 # 4 când 4 sunt umplute
// Cu CBC, dimensiunea blocului este extinsă la/cu 8.
// input = 15byte, output = 16. umplutura # 1
// intrare = 16, ieșire = 24. umplutură # 8 # 8 # 8 # 8 # 8 # 8 # 8 # 8
// Inițializați IV de 8 ori 0, altfel primul bloc este gunoiul # 0 # 0 # 0 # 0 # 0 # 0 # 0 # 0
procedura TForm1.Button1Click (Expeditor: TObject);
var
DefCipherClass: TCipher_2DES;
Temp: String;
începe
DefCipherClass: = TCipher_2DES.Create;
DefCipherClass.Mode: = cmCBCx;
Temp: = 'AAAAAAAAAAAAAAAA';
DefCipherClass.Init (Temp, # 0 # 0 # 0 # 0 # 0 # 0 # 0 # 0); // setați parola și IV
Memo1.Lines.Add (IntToStr (Lungime (Temp)) + ':' + Temp);
Memo1.Lines.Add (TFormat_HEX.Encode (Temp));
// mesajul nostru + căptușeala, astfel încât să ajungem să blocăm dimensiunea 8
Temp: = '123456789012345' + # 1;
Memo1.Lines.Add (IntToStr (Lungime (Temp)) + ':' + Temp);
Memo1.Lines.Add (TFormat_HEX.Encode (Temp));
Temp: = DefCipherClass.EncodeBinary (Temp); // criptează
Memo1.Lines.Add (IntToStr (Lungime (Temp)) + ':' + Temp);
Memo1.Lines.Add (TFormat_HEX.Encode (Temp));
Temp: = DefCipherClass.DecodeBinary (Temp); // decriptează
Memo1.Lines.Add (IntToStr (Lungime (Temp)) + ':' + Temp);
Memo1.Lines.Add (TFormat_HEX.Encode (Temp));
// Acum, umplutura trebuie eliminată
Acum sunt surprins cât de ușor a fost cu DEC ^^
a fost repede copleșit la început, deoarece erau atât de mult în exemple și mi-a fost greu să filtrez ceea ce aveam nevoie
dar odată ce ai perspectiva, DEC este pur și simplu minunat
și dacă omiteți toate Memo1.Lines.Add este un cod de 10 linii pentru a cripta cu 3DES și pentru a-l decripta din nou imediat
procedura TForm1.Button1Click (Expeditor: TObject);
var
DefCipherClass: TCipher_2DES;
Temp: String;
începe
DefCipherClass: = TCipher_2DES.Create;
DefCipherClass.Mode: = cmCBCx;
DefCipherClass.Init ('AAAAAAAAAAAAAAAA', # 0 # 0 # 0 # 0 # 0 # 0 # 0 # 0); // setați parola și IV
Temp: = '123456789012345' + # 1; // text + padding
Temp: = DefCipherClass.EncodeBinary (Temp); // criptează
DefCipherClass.Done; // a curăța
Temp: = DefCipherClass.DecodeBinary (Temp); // decriptează
// Acum, umplutura trebuie eliminată
DefCipherClass.Free;
Sfârșit;
acum este 100% compatibil cu CrypTool