[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]