Y para que no digais que falta el codigo, y aunque ando un poco apurado ...
Código Delphi
[-]
uses AES, Base64;
function Cifrar(Str,Clave: String): String;
var
Src: TStringStream;
Dst: TMemoryStream;
Size: Integer;
Key: TAESKey;
ExpandedKey: TAESExpandedKey;
begin
Result:= EmptyStr;
Src:= TStringStream.Create(Str);
try
Dst:= TMemoryStream.Create;
try
FillChar(Key,Sizeof(Key),#0);
if Length(Clave) > Sizeof(Key) then
move(PChar(Clave)^,Key,Sizeof(key))
else
move(PChar(Clave)^,Key,Length(Clave));
AEsExpandKey(ExpandedKey,Key);
Size:= Src.Size;
Dst.WriteBuffer(Size,Sizeof(Size));
AESEncryptStreamECB(Src,Dst,ExpandedKey);
Result:= BinToStr(Dst.Memory,Dst.Size);
finally
Dst.Free;
end;
finally
Src.Free;
end;
end;
function Descifrar(Str,Clave: String): String;
var
Src: TMemoryStream;
Dst: TStringStream;
Size: Integer;
Key: TAESKey;
ExpandedKey: TAESExpandedKey;
begin
Result:= EmptyStr;
Src:= TMemoryStream.Create;
try
Dst:= TStringStream.Create(Str);
try
StrToStream(Str,Src);
Src.Position:= 0;
FillChar(Key,Sizeof(Key),#0);
if Length(Clave) > Sizeof(Key) then
move(PChar(Clave)^,Key,Sizeof(key))
else
move(PChar(Clave)^,Key,Length(Clave));
AESExpandKey(ExpandedKey,Key);
Src.ReadBuffer(Size,Sizeof(Size));
AESDecryptStreamECB(Src,Dst,ExpandedKey);
Dst.Size:= Size;
Result:= Dst.DataString;
finally
Dst.Free;
end;
finally
Src.Free;
end;
end;
ShowMessage(Descifrar(Cifrar('Hola mundo','1234'),'1234'));