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.
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
.