web-dev-qa-db-fra.com

Comprendre le résultat de la commande `cksum`

Quand j'exécute la commande cksum j'obtiens ce qui suit en sortie

2836376023   36 myfile.txt

Je comprends que 36 est la taille du fichier suivi du nom du fichier

Mais j'aimerais connaître la formule permettant de générer le nombre 283637602. Je sais que d'un fichier à l'autre, le nombre est complètement différent.

3
Joe Le Rip

Le nombre 2836376023 est la somme de contrôle CRC du fichier.

CRC = contrôle de redondance cyclique

En bref, une opération mathématique ( division polynomiale ) est effectuée sur le contenu d'un fichier et le reste est utilisé pour générer la somme de contrôle. Si le fichier a changé depuis la dernière fois que le calcul a été effectué, la somme de contrôle est différente. Vous pouvez donc l'utiliser pour vous assurer que les fichiers n'ont pas été endommagés lors du transit. Cette méthode n’est utile que pour vérifier la corruption accidentelle de données; il n'est pas sécurisé contre les attaques délibérées, car il est assez simple de modifier un fichier de telle sorte que la somme de contrôle du CRC reste la même.

Pour développer ceci, le programme effectuant la somme de contrôle (tel que cksum) définit un polynôme générateur comme étant le dénominateur de la division polynomiale. Le contenu du fichier à vérifier est le numérateur.

Des exemples détaillés du calcul peuvent être trouvés sur Wikipedia:
Calcul des contrôles de redondance cyclique

Si vous voulez connaître les détails exacts de l'implémentation dans le cas de cksum, vous pouvez lire le code source online at Savannah

Ou téléchargez-le par activant les téléchargements sources et en cours d'exécution (à votre domicile)

Sudo apt update
mkdir coreutils-src && cd coreutils-src
apt source coreutils

Puis cd dans le nouveau répertoire. cksum.c est dans le sous-répertoire src.

5
Zanna