function
EncryptString(Value:
string
; Key:
string
;
KeyBit: TKeyBit = kb128):
string
;
var
SS, DS: TStringStream;
Size:
Int64
;
AESKey128: TAESKey128;
AESKey192: TAESKey192;
AESKey256: TAESKey256;
begin
Result :=
''
;
SS := TStringStream
.
Create(Value);
DS := TStringStream
.
Create(
''
);
try
Size := SS
.
Size;
DS
.
WriteBuffer(Size, SizeOf(Size));
if
KeyBit = kb128
then
begin
FillChar(AESKey128, SizeOf(AESKey128),
0
);
Move(
PChar
(Key)^, AESKey128, Min(SizeOf(AESKey128), Length(Key)));
EncryptAESStreamECB(SS,
0
, AESKey128, DS);
end
;
if
KeyBit = kb192
then
begin
FillChar(AESKey192, SizeOf(AESKey192),
0
);
Move(
PChar
(Key)^, AESKey192, Min(SizeOf(AESKey192), Length(Key)));
EncryptAESStreamECB(SS,
0
, AESKey192, DS);
end
;
if
KeyBit = kb256
then
begin
FillChar(AESKey256, SizeOf(AESKey256),
0
);
Move(
PChar
(Key)^, AESKey256, Min(SizeOf(AESKey256), Length(Key)));
EncryptAESStreamECB(SS,
0
, AESKey256, DS);
end
;
Result := StrToHex(DS
.
DataString);
finally
SS
.
Free;
DS
.
Free;
end
;
end
;
function
DecryptString(Value:
string
; Key:
string
;
KeyBit: TKeyBit = kb128):
string
;
var
SS, DS: TStringStream;
Size:
Int64
;
AESKey128: TAESKey128;
AESKey192: TAESKey192;
AESKey256: TAESKey256;
begin
Result :=
''
;
SS := TStringStream
.
Create(HexToStr(Value));
DS := TStringStream
.
Create(
''
);
try
Size := SS
.
Size;
SS
.
ReadBuffer(Size, SizeOf(Size));
if
KeyBit = kb128
then
begin
FillChar(AESKey128, SizeOf(AESKey128),
0
);
Move(
PChar
(Key)^, AESKey128, Min(SizeOf(AESKey128), Length(Key)));
DecryptAESStreamECB(SS, SS
.
Size - SS
.
Position, AESKey128, DS);
end
;
if
KeyBit = kb192
then
begin
FillChar(AESKey192, SizeOf(AESKey192),
0
);
Move(
PChar
(Key)^, AESKey192, Min(SizeOf(AESKey192), Length(Key)));
DecryptAESStreamECB(SS, SS
.
Size - SS
.
Position, AESKey192, DS);
end
;
if
KeyBit = kb256
then
begin
FillChar(AESKey256, SizeOf(AESKey256),
0
);
Move(
PChar
(Key)^, AESKey256, Min(SizeOf(AESKey256), Length(Key)));
DecryptAESStreamECB(SS, SS
.
Size - SS
.
Position, AESKey256, DS);
end
;
Result := DS
.
DataString;
finally
SS
.
Free;
DS
.
Free;
end
;
end
;