[Back to DELPHI SWAG index] [Back to Main SWAG index] [Original]

    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.

[Back to DELPHI SWAG index] [Back to Main SWAG index] [Original]