home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 9 / CDACTUAL9.iso / share / Dos / VARIOS / pascal / CRC.SWG / 0002_RemoteAccess CRC Routine.pas < prev   
Encoding:
Pascal/Delphi Source File  |  1996-02-21  |  1.0 KB  |  57 lines

  1.  
  2. unit racrc;
  3. interface
  4.  
  5. procedure makecrc32table;
  6. function updatecrc32(c : byte; crc : longint) : longint;
  7. function calccrc(pass1: string) : longint;
  8.  
  9. implementation
  10.  
  11. var
  12.     crc32table : array [byte] of longint;
  13.     crcval : longint;
  14.     j      : integer;
  15.  
  16. procedure makeCRC32table;
  17. var crc : longint;
  18.     i,n : byte;
  19. begin
  20.  for i := 0 to 255 do
  21.    begin
  22.      crc := i;
  23.      for n := 1 to 8 do
  24.        if odd(crc) then
  25.          crc := (crc shr 1) xor $EDB88320
  26.        else
  27.          crc := crc shr 1;
  28.      crc32table[i] := crc;
  29.    end;
  30. end;
  31.  
  32. function updateCRC32(c : byte; crc : longint) : longint;
  33. begin
  34.  updateCRC32 := crc32table[lo(crc) xor c] xor (crc shr 8);
  35. end;
  36.  
  37. function calccrc(pass1 : string) : longint;
  38. begin
  39.   makecrc32table;
  40.   crcval := $FFFFFFFF;
  41.   for j := 1 to length(pass1) do
  42.     begin
  43.       crcval := updateCRC32(ord(pass1[j]),crcval);
  44.     end;
  45.     calccrc := crcval;
  46. end;
  47. begin
  48. end.
  49.  
  50.  
  51. Use like this:
  52.  
  53. password := 'REMOTEACCESS';
  54.  
  55. i := calccrc(password);
  56.  
  57.