program plip;
{$MODE OBJFPC}{$H+}
uses
SysUtils
DCPcrypt2, DCPrijndael, DCPbase64;
function BinStr2Hex(S: AnsiString): AnsiString;
var
i: integer;
begin
Result := '';
for i := 1 to Length(S)
do Result := Result + LowerCase(HexStr(Byte(S[i]), 2));
end;
var
Cipher : TDCP_rijndael;
Key : AnsiString;
IV : AnsiString;
Data : AnsiString;
CBC : AnsiString;
ECB : AnsiString;
Buffer : AnsiString;
begin
Data := 'Hello World_____';
Key := '1234567890______';
IV := '______1234567890';
Cipher := TDCP_rijndael.Create(nil);
Cipher.Init(Key[1], 128, @IV[1]);
SetLength(Buffer, Length(Data));
Cipher.EncryptECB(Data[1], Buffer[1]);
Cipher.Free;
ECB := Buffer;
Cipher := TDCP_rijndael.Create(nil);
Cipher.Init(Key[1], 128, @IV[1]);
SetLength(Buffer, Length(Data));
Cipher.EncryptCBC(Data[1], Buffer[1], Length(Data));
Cipher.Free;
CBC := Buffer;
WriteLn('KEY : ', Key , ' (', Length(Key) , ')');
WriteLn('IV : ', IV , ' (', Length(IV) , ')');
WriteLn('DATA : ', Data , ' (', Length(Data), ')');
WriteLn;
WriteLn('ECB : ', BinStr2Hex(ECB) , ' (', Length(ECB) , ')');
WriteLn('CBC : ', BinStr2Hex(CBC) , ' (', Length(CBC) , ')');
WriteLn;
ECB := Base64EncodeStr(ECB);
WriteLn('ECB_BASE64 : ', ECB , ' (', Length(ECB) , ')');
CBC := Base64EncodeStr(CBC);
WriteLn('CBC_BASE64 : ', CBC , ' (', Length(CBC) , ')');
end.