Einzelnen Beitrag anzeigen

Benutzerbild von Ajintaro
Ajintaro

Registriert seit: 20. Okt 2004
Ort: Sankt Augustin
138 Beiträge
 
Delphi XE6 Starter
 
#3

AW: URL Parameter verschlüsseln mit DEC 5.2 (AES 128)

  Alt 15. Jan 2015, 14:17
Hi,

vielen Dank für dein Beispiel, es funktioniert auch tadellos. Allerdings komme ich nicht weiter in meinem Bestreben, verschlüsselte Parameter mit folgenden Vorgaben zu entschlüsseln:
"The mecanism used is AES encryption (128 bits symmetric key). A shared key must be used to en- and decrypt all the parameters"

Ausgehend von Hagen's Beispiel:

Delphi-Quellcode:

var
  ACipherClass: TDECCipherClass = TCipher_Rijndael;
  ACipherMode: TCipherMode = cmCBCx;
  AHashClass: TDECHashClass = THash_Whirlpool;
  ATextFormat: TDECFormatClass = TFormat_Mime64;

function Decrypt(const AText: String; const APassword: String): String; overload;
var
  ASalt: Binary;
  AData: Binary;
  ACheck: Binary;
  APass: Binary;
  ALen: Integer;
begin
  with ValidCipher(ACipherClass).Create, Context do
  try
    ASalt := ValidFormat(ATextFormat).Decode(AText);
    ALen := Length(ASalt) - 16 - BufferSize;
    AData := System.Copy(ASalt, 17, ALen);
    ACheck := System.Copy(ASalt, ALen + 17, BufferSize);
    SetLength(ASalt, 16);
    APass := ValidHash(AHashClass).KDFx(APassword[1], Length(APassword) * SizeOf(APassword[1]), ASalt[1], Length(ASalt), Keysize, TFormat_Copy, AKDFIndex);
    Mode := ACipherMode;
    Init(APass);
    SetLength(Result, ALen div SizeOf(AText[1]));
    Decode(AData[1], Result[1], ALen);
    if ACheck <> CalcMAC then
      raise Exception.Create('Invalid data');
  finally
    Free;
    ProtectBinary(ASalt);
    ProtectBinary(AData);
    ProtectBinary(ACheck);
    ProtectBinary(APass);
  end;
end;

 //Beispielaufruf
 Showmessage(Decrypt('6937694576347569345', 'ultrasecretkey'));
sehe ich, dass AES als Methode im Modus cmCBCx (Blocks of Cipher.BufferSize bytes, on Blockcipher that's equal to Cipher.BlockSize.) genutzt wird. An welcher Stelle wird denn z.B. die Verschlüsselungstiefe (z.B. 128Bit) gesetzt ?
Jaimy
DAoC 2.0 -> Camelot Unchained !
  Mit Zitat antworten Zitat