{
*************************************************************************
* 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
* 5: 4- avoid use StartKey less than 256
* if it use only for internal use you may use default
* key, but MODIFY unit before compiling
* 修改下面的3个值以获得不同的加密效果
* StartKey = 564; Start default key
* MultKey = 34656; Mult default key
* AddKey = 47823; Add default key
* function cl_encrypt(s:string):string; 加密源s,返回加密码
* function cl_decrypt(s:string):string; 解密源s,返回解密码
* Platform: work in Delphi, 2^48 variants, 0..255 strings
* 作者:cactus123456
* Email: [email protected]
*************************************************************************
}
unit Cl_crypt32;
interface
uses
SysUtils;
const
StartKey = 564; {Start default key}
MultKey = 34656; {Mult default key}
AddKey = 47823; {Add default key}
function cl_encrypt(s:string):string;
function cl_decrypt(s:string):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;
Function cl_intto0str(int1:integer; len:integer):string;
var
i,j:integer;
begin
if length(inttostr(int1))>=len then
result:=inttostr(int1)
else
begin
result:='';
i:=len-length(inttostr(int1));
for j:=1 to i do result:=result+'0';
result:=result+inttostr(int1);
end;
end;
function cl_chartobytestr(s:string):string;
var
i:byte;
begin
result:='';
for i:=1 to length(s) do
result:=result+cl_intto0str(byte(s[i]),3);
end;
function cl_bytetocharstr(s:string):string;
var
i:integer;
begin
i:=1;
result:='';
if (length(s) mod 3)=0 then
while i
比格高
逼格更高