Contributor: MARTIN WOODS
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);


AltStyle によって変換されたページ (->オリジナル) /