{******************************************************************}
{ Cryptlgy.pas                                                     }
{                                                                  }
{ Author    : A.Nasir Senturk                                      }
{ Home Page : http://www.shenturk.com                              }
{ Email     : shenturk@gmail.com                                   }
{                                                                  }
{ Date      : 03.01.2007                                           }
{ Update    : 22.03.2007                                           }
{                                                                  }
{ Sizden iki şey rica edicem:                                      }
{ 1. Lutfen bu baslik kismini kaldirmayiniz.                       }
{ 2. Mumkunse bagis yapiniz.                                       }
{ *****************************************************************}

unit Cryptlgy;

interface

uses SysUtils, Classes;

{ EncryptCipher }
function EncryptCipher(const Password, PlainData: string): string;

{ DecryptCipher }
function DecryptCipher(const Password, EncryptData: string): string;

implementation

uses AesLib;

function DecryptCipher(const Password, EncryptData: string): string;
var
  Source, Dest: TStringStream;
  Encryption: TEncryption;
begin
  Source := TStringStream.Create(EncryptData);
  try
    Dest := TStringStream.Create('');
    try
      Encryption := TEncryption.Create(Password, defCryptBufSize);
      try
        with Encryption do
        begin
          if DecryptStream(Source, Dest, Source.Size) then
            Result := Dest.DataString
          else Result := '';
        end;
      finally
        Encryption.Free;
      end;
    finally
      Dest.Free;
    end;
  finally
    Source.Free;
  end;
end;

function EncryptCipher(const Password, PlainData: string): string;
var
  Source, Dest: TStringStream;
  Encryption: TEncryption;
begin
  Source := TStringStream.Create(PlainData);
  try
    Dest := TStringStream.Create('');
    try
      Encryption := TEncryption.Create(Password, defCryptBufSize);
      try
        with Encryption do
        begin
          if EncryptStream(Source, Dest) then
            Result := Dest.DataString
          else Result := '';
        end;
      finally
        Encryption.Free;
      end;
    finally
      Dest.Free;
    end;
  finally
    Source.Free;
  end;
end;

end.
