CRC32

Stato
Discussione chiusa ad ulteriori risposte.

Oromis92

Utente Silver
22 Dicembre 2007
102
12
2
84
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
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
 
http://www.vbsimple.net/index.htm?/activity/act_18.htm
http://www.freesoft.org/CIE/RFC/1510/78.htm

cercare su google per 2 secondi no eh?
 
Shura... Ovvio che è quello. ma non cercare documenti in italiano, che trovi solo robaccia scritta male.
È mooolto più facile di quanto sembri (dai un occhiata al mio sorgente)
 
Il primo link di razor (...che avevo postato anch'io...) è ottimo. Leggilo e guardati le parti di codice, sono molto utili.

ecco una mia spiegazione dell'algoritmo in pseudocodice: http://www.infernet-x.com/-pseudocodice-crc32-t-13961.html
 
Stato
Discussione chiusa ad ulteriori risposte.