Comment calculer CRC Checksum dans Linux en utilisant cksum commande
Checksum est utilisé pour vérifier l'intégrité des données. Supposons un certain fichier est copié sur un réseau ou sur un système et en raison d'un événement comme la perte de connexion réseau ou redémarrage soudain de la machine les données ne sont pas copiés complètement.
Maintenant, comment voulez-vous vérifier l'intégrité des données? Eh bien, son à travers le mécanisme de contrôle CRC l'intégrité des données peut être vérifiée. Il existe différents mécanismes par lesquels une somme de contrôle CRC peut être calculé. Par exemple, dans un de nos articles (somme de contrôle d'en-tête IP) nous avons discuté de la façon de trouver la somme de contrôle d'un en-tête IP. Dans cet article, nous allons nous concentrer sur la commande « cksum » Linux qui est utilisé pour calculer la somme de contrôle des fichiers ou des données fournies sur l'entrée standard.
Qu'est-ce que CRC?
CRC signifie contrôle de redondance cyclique.
Checksum peut être calculée en appliquant le mécanisme de contrôle de redondance cyclique (CRC) sur les données est communiqué. Chaque bloc de données qui se déplace le canal de communication est fixée à un code CRC ou somme de contrôle et lorsque le bloc de données atteint la destination, cette vérification est appliquée à nouveau pour générer une valeur de somme de contrôle. Si la somme de contrôle généré à la destination et la valeur de contrôle dans le bloc de données sont les mêmes alors des données est considéré comme non corrompu et peut être utilisé plus loin, mais si les deux valeurs de somme de contrôle ne sont pas même alors dans les données de cas est dit être corrompu ou infectés.
Le nom CRC est parce que:
- Ce mécanisme repose sur les principes de base de codes cycliques (donc cycliques).
- Le code fixé avec les données en tant que somme de contrôle est redondante à-dire qu'il ajoute aucune valeur pour les données en cours de transfert (donc redondance).
- Son chèque (donc vérifier)
La commande cksum
La commande cksum est utilisé pour le calcul du contrôle de redondance cyclique (CRC) pour chaque fichier qui lui est fournie comme argument. CRC devient important dans les situations où l'intégrité des données doit être vérifiée. En utilisant la commande cksum, on peut comparer la somme de contrôle du fichier de destination avec celui du fichier source de conclure que si le transfert de données a réussi ou non.
En plus de fournir la valeur CRC, cette commande produit également la taille du fichier et le nom du fichier dans la sortie. La commande se termine avec le statut zéro en cas de succès et de toute autre valeur d'état indique l'échec.
On peut obtenir des informations détaillées sur cette commande en tapant ce qui suit à l'invite de commande:
Exemples de commandes CKSUM
1. Un exemple de base
Sur un niveau très basique, la commande cksum peut être utilisé pour afficher la somme de contrôle d'un fichier.
La première valeur (grand nombre) dans la sortie ci-dessus est la somme de contrôle du fichier, nous avons la taille du fichier et enfin le nom du fichier.
2. Modifications de checksum avec changement de contenu
Le fichier de test « testfile.txt » a contenu suivant:
Pour calculer la somme de contrôle du fichier de test, passer comme argument à la commande cksum:
Maintenant, Modifier le contenu du fichier:
Encore une fois passer le fichier de test comme argument de commande cksum:
Nous voyons donc que le changement dans le contenu, les changements de contrôle.
Eh bien ce qui précède est vrai aussi fondamentalement et même pour chksum aussi. Voyons voir ce que cela signifie:
Vérifiez le contenu du fichier de test « testfile.txt »:
Notez la somme de contrôle:
Maintenant, changer le contenu en fait pas d'ajouter ou de supprimer quelque chose, mais en remplaçant un caractère avec d'autres afin que la taille du fichier reste la même.
Donc, comme vous pouvez le voir, je l'ai remplacé « o » avec « u ».
Comparer la somme de contrôle maintenant:
Nous voyons donc que la somme de contrôle a changé, même si le changement était d'un caractère remplacé par d'autres.
4. Une copie interrompue
Supposons que vous copiez un dossier compressé contenant différents sous-dossiers et fichiers d'un endroit à l'autre et pour quelque raison que ce soit le processus de copie se est interrompu, alors comment voulez-vous vérifier si tout a été copié avec succès ou non? Eh bien, cksum permet que maintenant, nous savons que dans le cas de la copie partielle, la somme de contrôle globale de la destination serait différente de celle du dossier source.
Vous pouvez simuler ce scénario de la manière suivante:
J'ai créé linux.tar.gz et Linux_1.tar.gz du même dossier « Linux ». La différence étant que Linux_1.tar.gz a été faite lorsque le dossier « Linux » contenait un fichier texte supplémentaire.
Ainsi, le scénario ci-dessus simule quand Linux_1.tar.gz a été copié mais je me suis interrompu alors qu'un seul fichier texte a été laissé à copier dans la cible linux.tar.gz
Maintenant, quand je compare la somme de contrôle de ces deux fichiers, je vois
Ainsi, la sortie ci-dessus montre les différentes valeurs de somme de contrôle suggérant une copie incorrecte du fichier.
5. Checksum de sortie standard
Cette commande fournit une fonction où dans l'utilisateur peut taper simplement « cksum » ou « cksum- » et écrire sur stdin puis appuyez sur Ctrl + D deux fois. Cette façon cksum donne la somme de contrôle des données saisies à l'entrée.
Dans l'exemple ci-dessus, nous avons effectivement calculé la somme de contrôle de la chaîne « Permet de vérifier la somme de contrôle ».
Cependant, je pense que md5sum est beaucoup mieux que la cksum que la valeur de sortie est plus large en longueur.
Checksum et CRC sont des choses très différentes et distinctes. Checksums sont utilisés (entre autres) dans les transferts IP en sont souvent utilisés CRCs dans les contrôles d'intégrité des fichiers internes. Checksum est une simple addition de tous les octets (mots ou longs, etc.) d'un fichier ensemble et n'est pas infaillible. CRC est beaucoup plus sophistiqué et par conséquent, beaucoup plus intense et calculer beaucoup plus fiable pour détecter les erreurs de Transmission. Alors, qui est-il? Est-ce que cksum produire une somme de contrôle ou un CRC? Je soupçonne que l'ancien CRC a besoin de plus paramaters d'entrée dans les versions que je connais. RFM.
serviable, mais pourrait expliquer CRC plus en détail dans l'article futur.
Je vous remercie. Il est utile ...
La façon la plus simple de calculer une somme de contrôle est par oring exclusive (sans ajout de carry) tous les octets. L'étape suivante consiste en les ajoutant tout. Les deux méthodes utilisent parfois une valeur prédéfinie ou un algorithme de complémentation pour des raisons de fiabilité mathématiques.
Un calcul plus sophistiqué est un CRC (contrôle de redondance cyclique). Si cela est fait intelligemment, il est presque aussi rapide que additionnant les octets. CRC est une méthode bien définie et normalisée CCITT afin qu'il n'y ait pas d'homonymie. CRC sont disponibles en 16, 32 et 64 bits. Si nous voulons faire des choses que nous utilisons encore plus fiable checksum MD5 ou SHA1 allant de 128 octets jusqu'à plusieurs kilo-octets. Nous avons tendance à ne pas appeler ces « checksum, mais « valeurs de hachage, mais fondamentalement, ils sont encore checksum.
Il n'y a pas de différence entre « sur le disque CRC checksum et CRC checksum utilisés dans les systèmes de transmission.
Comment puis-je vérifier l'image avec la somme de contrôle d'en-tête ??
juste mon 2 cents ... checksums, crc, md5, etc., ils sont tous les contrôles d'intégrité. certains ont plus de force que d'autres.
sur CRC vs checksums:
J'ai tendance à associer « sommation » avec check-SOMME. Par exemple: les implémentations de checksum communes comprennent ses deux ou de sommations compliment. par exemple. Additionnez tous les chiffres (y compris la valeur de somme de contrôle) et vous obtenez 0x00 dans les 8 derniers bits de l'accumulateur.
Comparez cela à CRCs où il n'y a pas de sommation. Son tout décalage de bit et XOR'ing à des valeurs de bits spécifiques (déterminées par le polynôme et la largeur de la valeur CRC).
de toute façon ... c'est ma thèse sur les raisons checksum ne sont pas, et donc pourquoi CRCs l'aide d'un utilitaire appelé « cksum » pour calculer un CRC est source de confusion.
De plus, si cksum effectue alors vraiment un CRC vous devez indiquer la largeur de la CRC et le polynôme utilisé.
Comment est un XOR différent d'ajouter? Comment se déplace différent de se multiplier?
CRC est juste un calcul, pas différent des autres méthodes. Il ne fait aucun sens de faire la différence entre les méthodes de calcul autres que certains sont plus forts que d'autres. Le CRC8 et MOD11 8 bits sont des polynômes comme sont MD5 SHA-x, CRC-x, et que non. Le choix de polynôme dépend de vos besoins. Vous devez équilibrer les performances (vitesse), la fiabilité et la sécurité.