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

e corect

3des

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