home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / top2src.zip / TOPLINK.ZIP / REG.PAS < prev    next >
Pascal/Delphi Source File  |  1996-03-19  |  1KB  |  59 lines

  1. Unit Reg;
  2.  
  3. Interface
  4.  
  5. Uses TopLSupp;
  6.  
  7. Function ValidateKey(VKStr, VKCode : String; Seed1, Seed2 : Word) : Boolean;
  8. Function GenerateKey(GKStr : String; GKS1, GKS2 : Word) : LongInt;
  9.  
  10. Implementation
  11.  
  12. Function ValidateKey(VKStr, VKCode : String; Seed1, Seed2 : Word) : Boolean;
  13. Var
  14.   VKey : LongInt;
  15.   C : Word;
  16. Begin
  17.   Val(VKCode, VKey, C);
  18.   ValidateKey := (VKey = GenerateKey(VKStr, Seed1, Seed2));
  19. End;
  20.  
  21. Function GenerateKey(GKStr : String; GKS1, GKS2 : Word) : LongInt;
  22. Var
  23.   NewKey, GTmp : LongInt;
  24.   GKD, Target : Integer;
  25.   GK1, GK2 : LongInt;
  26. Begin
  27.   GKStr := UPStr(GKStr);
  28.  
  29.   NewKey := LongInt(0);
  30.   GKD := 1;
  31.   GK1 := GKS1;
  32.   GK2 := GKS2;
  33.  
  34.   If GKStr[Length(GKStr)] = #0 then Target := Length(GKStr) - 1 else Target := Length(GKStr);
  35.   While NewKey = 0 do
  36.   Begin
  37.     While GKD <= Target do
  38.     Begin
  39.       GTmp := (Ord(GKStr[GKD]) * GK1) +
  40.               (Ord(GKStr[GKD + 1]) * GK2);
  41.       NewKey := NewKey + GTmp;
  42.       Inc(GKD, 2);
  43.     End;
  44.  
  45.     NewKey := (NewKey MOD GK1) * (NewKey MOD GK2);
  46.     NewKey := NewKey * (GK1 + GK2);
  47.  
  48.     If NewKey = 0 then
  49.     Begin
  50.       Inc(GKS1, 3);
  51.       Inc(GKS2, 4);
  52.     End;
  53.   End;
  54. GenerateKey := NewKey;
  55. End;
  56.  
  57. End.
  58.  
  59.