AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DECUtil alt auf DECUtil 5.2

Ein Thema von tsteinmaurer · begonnen am 3. Jan 2012 · letzter Beitrag vom 12. Jan 2012
 
pko

Registriert seit: 4. Sep 2008
Ort: Niederrhein
5 Beiträge
 
Delphi XE2 Enterprise
 
#3

AW: DECUtil alt auf DECUtil 5.2

  Alt 5. Jan 2012, 19:19
schau mal

var
ACipherClass: TDECCipherClass = TCipher_Blowfish; //TCipher_1DES;//TCipher_Rijndael;
ACipherMode: TCipherMode = cmCTSx;
AHashClass: TDECHashClass = THash_Whirlpool;
(** oder *******
THash_MD2
THash_MD4
THash_MD5
THash_RipeMD128
THash_RipeMD160
THash_RipeMD256
THash_RipeMD320
THash_SHA
THash_SHA1
THash_SHA256
THash_SHA384
THash_SHA512
THash_Haval128
THash_Haval160
THash_Haval192
THash_Haval224
THash_Haval256
THash_Tiger
THash_Panama
THash_Whirlpool
THash_Whirlpool1
THash_Square
THash_Snefru128
THash_Snefru256
THash_Sapphire
*********)
ATextFormat: TDECFormatClass = TFormat_HEX; //TFormat_Mime64;
AKDFIndex: LongWord = 1;



function TRegisterClass.EncodeCipher( Input, Key: String ): String;
var
ASalt: Binary;
AData: Binary;
APass: Binary;
begin
with ValidCipher(ACipherClass).Create, Context do
try
ASalt := RandomBinary(16);
APass := ValidHash(AHashClass).KDFx(Key[1], Length(Key) * SizeOf(Key[1]), ASalt[1], Length(ASalt), KeySize, TFormat_Copy, AKDFIndex);
Mode := ACipherMode;
Init(APass);
SetLength(AData, Length(Input) * SizeOf(Input[1]));
Encode(Input[1], AData[1], Length(AData));
Result := ValidFormat(ATextFormat).Encode(ASalt + AData + CalcMAC);
finally
Free;
ProtectBinary(ASalt);
ProtectBinary(AData);
ProtectBinary(APass);
end;
ShowMessage('EncodeCipher: '+result);
end;

function TRegisterClass.DecodeCipher( Input, Key: String ): String;
var
ASalt: Binary;
AData: Binary;
ACheck: Binary;
APass: Binary;
ALen: Integer;
begin
with ValidCipher(ACipherClass).Create, Context do
try
ASalt := ValidFormat(ATextFormat).Decode(Input);
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(Key[1], Length(Key) * SizeOf(Key[1]), ASalt[1], Length(ASalt), KeySize, TFormat_Copy, AKDFIndex);
Mode := ACipherMode;
Init(APass);
SetLength(Result, ALen div SizeOf(Input[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;
ShowMessage('DecodeCipher: '+result);
end;
Klaus
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz