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.