The next code shows a sample of how use the Rijndael Algorithm in Delphi 2007. Net
uses System.Security.Cryptography, System.Text; type TDynamicArrayOfByte = array of Byte; function Encrypt(StrtoEncrypt, PK: string): TDynamicArrayOfByte; // pk, must be of a string of 32 characters var miRijndael: Rijndael; encrypted: TDynamicArrayOfByte; toEncrypt: TDynamicArrayOfByte; bytPK: TDynamicArrayOfByte; i: integer; begin Result := nil; miRijndael := System.Security.Cryptography.RijndaelManaged.Create; try toEncrypt := System.Text.Encoding.UTF8.GetBytes(StrtoEncrypt); bytPK := System.Text.Encoding.UTF8.GetBytes(PK); miRijndael.Key := bytPK; miRijndael.GenerateIV; encrypted := (miRijndael.CreateEncryptor()).TransformFinalBlock(toEncrypt, 0, Length(toEncrypt)); setlength(result, Length(miRijndael.IV) + Length(encrypted)); for i:=0 to Length(miRijndael.IV)-1 do result[i] := miRijndael.IV[i]; for i:=0 to Length(encrypted)-1 do result[i + Length(miRijndael.IV)] := encrypted[i]; finally miRijndael.Clear(); end; end; function DesEncrypt(BufferEncrypted: TDynamicArrayOfByte; PK: string): string; // pk, must be of a string of 32 characters var miRijndael: Rijndael; encrypted: TDynamicArrayOfByte; tempArray: TDynamicArrayOfByte; bytPK: TDynamicArrayOfByte; i : integer; begin Result := ''; miRijndael := System.Security.Cryptography.RijndaelManaged.Create; setlength(tempArray, Length(miRijndael.IV)); setlength(encrypted, Length(BufferEncrypted) - Length(miRijndael.IV)); try bytPK := System.Text.Encoding.UTF8.GetBytes(PK); miRijndael.Key := bytPK; for i:=0 to Length(tempArray)-1 do tempArray[i] := BufferEncrypted[i]; for i:=0 to Length(encrypted)-1 do encrypted[i] := BufferEncrypted[i + Length(tempArray)]; miRijndael.IV := tempArray; Result := System.Text.Encoding.UTF8.GetString((miRijndael.CreateDecryptor()).TransformFinalBlock(encrypted, 0, Length(encrypted))); finally miRijndael.Clear(); end; end;