[Back to CRC SWAG index] [Back to Main SWAG index] [Original]

    unit racrc;
    interface

    procedure makecrc32table;
    function updatecrc32(c : byte; crc : longint) : longint;
    function calccrc(pass1: string) : longint;

    implementation

    var
        crc32table : array [byte] of longint;
        crcval : longint;
        j      : integer;

    procedure makeCRC32table;
    var crc : longint;
        i,n : byte;
    begin
     for i := 0 to 255 do
       begin
         crc := i;
         for n := 1 to 8 do
           if odd(crc) then
             crc := (crc shr 1) xor $EDB88320
           else
             crc := crc shr 1;
         crc32table[i] := crc;
       end;
    end;

    function updateCRC32(c : byte; crc : longint) : longint;
    begin
     updateCRC32 := crc32table[lo(crc) xor c] xor (crc shr 8);
    end;

    function calccrc(pass1 : string) : longint;
    begin
      makecrc32table;
      crcval := $FFFFFFFF;
      for j := 1 to length(pass1) do
        begin
          crcval := updateCRC32(ord(pass1[j]),crcval);
        end;
        calccrc := crcval;
    end;
    begin
    end.

    Use like this:

    password := 'REMOTEACCESS';

    i := calccrc(password);

[Back to CRC SWAG index] [Back to Main SWAG index] [Original]