scrivere un programma che calcoli il crc32 di un file o di una stringa
qui serve veramente conoscere l'inglese, visto che di documentazione in italiano non se ne vede neanche l'ombra
al massimo potete aiutarvi con questo
(usate come seed 0xEDB88320)
ecco la mia soluzione, molto perlish
test vectors
^^^^^^^^
Oromis92 ==> 0xf48be8dc
crc32 ==> 0x41542e4c
Crc32 ==> 0x46f82b7a
CRC32 ==> 0x270bab40
qui serve veramente conoscere l'inglese, visto che di documentazione in italiano non se ne vede neanche l'ombra
al massimo potete aiutarvi con questo
(usate come seed 0xEDB88320)
ecco la mia soluzione, molto perlish
Codice:
#!/usr/bin/perl
sub crc32
{
$poly = 0xEDB88320;
@table = ();
for $i (0..255) {
$c = $i;
$c = ($c & 1) ? (($c >> 1)^$poly) : ($c >> 1) for (0..7);
$table[$i] = $c;
}
$s = shift;
$crc = shift;
defined($crc) or $crc = 0xFFFFFFFF;
for ($i=0;$i<length($s);$i++) {
$crc = $table[($crc^ord(substr($s,$i,1))) & 0xFF] ^ ($crc >> 8);
}
return $crc;
}
sub crc32_file
{
$file = shift;
while ($ret = read($file,$buf,1024)) {
$crc32 = crc32($buf,$crc32);
}
printf("0x%x\n",$crc32);
}
if (@ARGV) {
while ($path = shift) {
open $file,"<",$path or die "Error\n";
&crc32_file($file) or die "Error\n";
close $file;
}
} else {
&crc32_file(\*STDIN);
}
test vectors
^^^^^^^^
Oromis92 ==> 0xf48be8dc
crc32 ==> 0x41542e4c
Crc32 ==> 0x46f82b7a
CRC32 ==> 0x270bab40