String::CRC crc function returns incorrect result, why?

Z

`Zidane Tribal

it would appear that using the command 'crc("data")' from the String::CRC
returns incorrect results (although, they are at least consistently
incorrect).

for example, this script.....

#!/usr/bin/perl -w
use strict;
use String::CRC;
print "crc: " . crc($ARGV[0]) . " " . length($ARGV[0]) . "\n";

produces this output:

zidane@bluemist:~/ps2/dev/crccheck$ ./crctest.pl 12345
crc: 3817467633 5
zidane@bluemist:~/ps2/dev/crccheck$

whereas this command:

zidane@bluemist:~/ps2/dev/crccheck$ echo -n "12345" | cksum
3288622155 5
zidane@bluemist:~/ps2/dev/crccheck$

produces a different crc value.

this is also true using String::CRC32, DIGEST::CRC and DIGEST::CRC32 (using
the command line commands cksum and crc32 to create respective crc and
crc32 values to test against)

my query is simple.... why is this? although the values are different,
they are consistently different (i.e. the same result returned with each
call given the same data). can anyone explain what i am doing wrong?

`Zidane.
 
J

Joe Smith

`Zidane Tribal said:
it would appear that using the command 'crc("data")' from the String::CRC
returns incorrect results

No, it's not. crc != cksum; there are many different CRC algorithms.
for example, this script.....

#!/usr/bin/perl -w
use strict;
use String::CRC;
print "crc: " . crc($ARGV[0]) . " " . length($ARGV[0]) . "\n";

produces this output:

zidane@bluemist:~/ps2/dev/crccheck$ ./crctest.pl 12345
crc: 3817467633 5
zidane@bluemist:~/ps2/dev/crccheck$

whereas this command:

zidane@bluemist:~/ps2/dev/crccheck$ echo -n "12345" | cksum
3288622155 5
zidane@bluemist:~/ps2/dev/crccheck$

produces a different crc value.

The String::CRC::Cksum module calculates a 32 bit CRC, generating
the same CRC value as the POSIX cksum program.

linux% cat cksum.pl
#!/usr/bin/perl -w
use strict;
use String::CRC::Cksum qw(cksum);
print "cksum: " . cksum($ARGV[0]) . " " . length($ARGV[0]) . "\n";
linux% perl cksum.pl 12345
cksum: 3288622155 5


-Joe

P.S. The newsgroup comp.lang.perl is defunct; use comp.lang.perl.misc instead.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,734
Messages
2,569,441
Members
44,832
Latest member
GlennSmall

Latest Threads

Top