unit Hash7; interface uses SysUtils, dialogs; Const var_165 = '5itndg36hj'; Const var_6dc = 94736404; //под вопросом // изменяется Const var_67a = 1037; Const var_1c8 :array[0..50] of integer = (28, 30, 28, 29, 28, 29, 26, 26, 28, 26, 26, 28, 27, 27, 29, 30, 27, 27, 13, 28, 28, 17, 26, 28, 26, 24, 33, 29, 28, 28, 28, 28, 27, 29, 27, 28, 29, 29, 29, 30, 29, 29, 28, 30, 28, 29, 28, 28, 29, 30, 18); Const var_c7 = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; type GHash=class(TObject) private Key: String; var_649: int64; MyLong: int64; var7: array[0..9] of integer; var8: array[0..9] of char; function Gen(GotKey: String): String; Function sub_221(var0: int64; var2: Integer; var3: Int64): int64; Function sub_219( var1: int64):integer; Function sub_19c(var0, var1: integer): integer; Function sub_2d5( var2: integer):integer; Function sub_d4c(var0: char;var1: char; var2: integer):boolean; Function sub_82a(var0: integer): integer; Function sub_46b(var0: integer; var1: string; var2: array of char; var3: int64; var00: array of integer; var6: integer): char; public constructor Create(); Overload; class function CreateHash(GotKey: String): String; published constructor Create(GotKey: String); Overload; destructor Destroy(); override; function Generate(): String; procedure SetGotKey(GotKey: String); end; implementation Function GHash.sub_46b(var0: integer; var1: string; var2: array of char; var3: int64; var00: array of integer; var6: integer): char; var var000: string; var70, nn: integer; begin var1:= var8; for var70:= 0 to 9 do begin var7[var70]:= var7[var70]+ ( var6 or integer(var1[var70+1])); var7[var70] := var7[var70] + var0 + var3; var6 :=var6+ var7[var70]; var7[var70] :=var7[var70]+ var_6dc; var8[var70] := var_c7[abs(var7[var70] mod length(var_c7))+1] ; end; result:= char(0); end; function GHash.sub_82a(var0: integer): integer; begin Result:= var_1c8[abs(var0 mod length(var_1c8))]; end; Function GHash.sub_d4c(var0: char;var1: char; var2: integer):boolean; begin result:= abs(ord(var0)-ord(var1)) >= var2 + sub_82a(var2); end; Function GHash.sub_2d5(var2: integer):integer; var var3: integer; var4, var5, var6: integer; begin for var3:=0 to 39 do begin var4 := var3 mod 10; var5:= abs(var3 * var7[var4] + var7[var4]) mod 10; if sub_d4c(var8[var4], var8[var5], 10) then begin var7[(var4 + var5) div 2]:= var7[(var4 + var5) div 2]+1; var7[var4] :=var7[var4]+ ord(var8[var5]); var7[var5] :=var7[var5]+ ord(var8[var4]); var2:= var2+1; end; end; result:=var2; end; Function GHash.sub_19c(var0, var1: integer): integer; begin if var0 < 0 then result:= 0 else begin if var1 <= var0 then result := var0 else begin randomize; Result:= var0 + abs(random(54654654) mod (var1-var0)); end; end; end; function GHash.sub_219( var1: int64): integer; var var3: integer; begin var7[0] := ord((var1 + var1 + var_6dc) * var1); for var3:= 1 to length(var7)-1 do begin var7[var3] :=integer( (var1 + var3 + var7[var3 -1]) * var1); end; Result:= sub_19c(10000, 1000000); end; Function GHash.sub_221(var0: int64; var2: Integer; var3: Int64): Int64; var var5: integer; begin for var5:= var2 downto 1 do begin var0:= var0 + (var3 * (Pos(var_165[var5] , var_c7)) + var_6dc); var3 := var3* 63; end; Result:= var0; end; constructor GHash.Create(); begin Key := ''; var_649 := -6341662746819428352; // 6936934864827449344; // изменяется end; constructor GHash.Create(GotKey: String); var i:integer; begin Key := GotKey; var_649 := -6341662746819428352; //6936934864827449344; // изменяется end; destructor GHash.Destroy(); begin Key := ''; inherited; end; procedure GHash.SetGotKey(GotKey: String); begin Key := GotKey; end; class function GHash.CreateHash(GotKey: String): String; var Hash:GHash; begin Hash := GHash.Create(GotKey); Result := Hash.Generate; Hash.Destroy; end; function GHash.Gen(GotKey: String): String; var var1: string; var2: int64; var4: integer; var9: boolean; var11: integer; var13: integer; tmp, tmp2: integer; begin try var1:= ''; var2:= 508; // изменяется 508 MyLong:= -000; var2:= var_649+ var2; for var4:= 0 to length(gotkey) do begin var2:= var2+ (ord( gotkey[var4])*var_649); end; var4 := length( var_165); var2 := sub_221(var2, var4, 1); for tmp:= 1 to length(var_165) do var8[tmp-1]:= var_165[tmp]; var9 := false; var11 := sub_219( var2); var13 := sub_2d5( 1); var11:= var11*var13; if(sub_46b(var4, Key + var_165, var8, var2, var7, var13) <> '') then var1 := IntToStr(var11 * 123) else var1 := var8; Result:= var1; except end; end; function GHash.Generate(): String; begin if(Key<>'')then Result := Gen(Key) else Result := '123'; // Error end; end.