Cryptography

Encrypt / decrypt code

Contributor: ANATOLY PODGORETSKY



unit Crypt32;

{

*************************************************************************

* Name: Crypt32.Pas *

* Description: 32 bits encode/decode module *

* 2^96 variants it is very high to try hack *

* Purpose: Good for encrypting passwors and text *

* Security: avoid use StartKey less than 256 *

* if it use only for internal use you may use default *

* key, but MODIFY unit before compiling *

* Call: Encrypted := Encrypt(InString,StartKey,MultKey,AddKey) *

* Decrypted := Decrypt(InString,StartKey) *

* Parameters: InString = long string (max 2 GB) that need to encrypt *

* decrypt *

* MultKey = MultKey key *

* AddKey = Second key *

* StartKey = Third key *

* (posible use defaults from interface) *

* Return: OutString = result string *

* Editor: Besr viewed with Tab stops = 2, Courier new *

* Started: 01.08.1996 *

* Revision: 22.05.1997 - ver.2.01 converted from Delphi 1 *

* and made all keys as parameters, before only start key *

* Platform: Delphi 2.0, 3.0 *

* work in Delphi 1.0, 2^48 variants, 0..255 strings *

* Author: Anatoly Podgoretsky *

* Base alghoritm from Borland *

* Address: Vahe 4-31, Johvi, Estonia, EE2045, tel. 61-142 *

* kvk@estpak.ee *

* Status: Freeware, but any sponsor help will be appreciated here *

* need to buy books, shareware products, tools etc *

*************************************************************************

* Modified: Supports Delphi 1.0 & 2.0 *

* Overflow checking removed *

* By: Martin Djernæs *


* e-mail: djernaes@einstein.ot.dk *

* web: einstein.ot.dk/~djernaes *

*************************************************************************

}

interface



const

  StartKey = 981; {Start default key}

  MultKey = 12674; {Mult default key}

  AddKey = 35891; {Add default key}



function Encrypt(const InString:string; StartKey,MultKey,AddKey:Integer): string;

function Decrypt(const InString:string; StartKey,MultKey,AddKey:Integer): string;



implementation



{$R-}

{$Q-}

{*******************************************************

 * Standard Encryption algorithm - Copied from Borland *

 *******************************************************}

function Encrypt(const InString:string; StartKey,MultKey,AddKey:Integer): string;

var

  I : Byte;

begin

  Result := '';

  for I := 1 to Length(InString) do

  begin

    Result := Result + CHAR(Byte(InString[I]) xor (StartKey shr 8));

    StartKey := (Byte(Result[I]) + StartKey) * MultKey + AddKey;

  end;

end;

{*******************************************************

 * Standard Decryption algorithm - Copied from Borland *

 *******************************************************}

function Decrypt(const InString:string; StartKey,MultKey,AddKey:Integer): string;

var

  I : Byte;

begin

  Result := '';

  for I := 1 to Length(InString) do

  begin

    Result := Result + CHAR(Byte(InString[I]) xor (StartKey shr 8));

    StartKey := (Byte(InString[I]) + StartKey) * MultKey + AddKey;

  end;

end;

{$R+}

{$Q+}



end.

 

Share this article!

Follow us!

Find more helpful articles: