Wie CRC-Prüfsumme in Linux mit Cksum Befehl zum Berechnen
Prüfsumme wird zur Überprüfung der Integrität der Daten verwendet. Angenommen, einige Datei über ein Netzwerk oder über ein System kopiert wird und aufgrund eines Ereignisses wie Netzwerkverbindung Verlust oder plötzliche Neustart der Maschine die Daten nicht vollständig kopiert werden.
Nun, wie würden Sie die Integrität der Daten überprüfen? Nun, es ist durch den CRC-Prüfsumme Mechanismus kann die Datenintegrität überprüft werden. Es gibt verschiedene Mechanismen, durch die eine CRC-Prüfsumme berechnet werden kann. Zum Beispiel in einem unserem Artikel (IP-Header-Prüfsumme) ich diskutierte, wie die Prüfsumme von einem IP-Header zu finden. In diesem Artikel werden wir uns auf den Befehl Linux konzentrieren ‚cksum‘, die verwendet wird, um die Prüfsummen von Dateien oder die Daten auf der Standardeingabe zur Verfügung gestellt zu berechnen.
Was ist CRC?
CRC steht für zyklische Redundanzprüfung.
Prüfsumme können durch Anwendung der zyklischen Redundanzprüfung (CRC) Mechanismus über die Daten berechnet werden, die kommuniziert wird. Jeder Block von Daten, die den Kommunikationskanal fahren, ist mit einem CRC-Code oder Prüfsumme angehängt, und wenn der Datenblock, das Ziel erreicht, wird diese Prüfung angewandt wieder einen Prüfsummenwert zu erzeugen. Wenn die Prüfsumme am Ziel und der Prüfsummenwert in dem Datenblock erzeugt werden, dieselbe dann werden Daten angenommen, dass nicht beschädigt sein und können weiter verwendet werden, aber wenn die beide Prüfsummen-Werte dann nicht gleich sind, in diesem Fall Daten, die beschädigt werden, oder infiziert.
Der Name CRC ist, weil:
- Dieser Mechanismus basiert auf den Grundlagen der periodischen Codes (daher zyklisch).
- Der Code, angebracht mit den Daten als redundante Prüfsumme ist also kein Wert zu den Daten hinzufügt (daher Redundanz) übertragen werden.
- Es ist ein Scheck (daher überprüfen)
Der cksum Befehl
Der cksum Befehl wird für die Berechnung der zyklische Redundanzprüfung (CRC) für jede Datei zur Verfügung gestellt, um es als Argument verwendet. CRC wird wichtig in Situationen, in denen die Datenintegrität überprüft werden muss. Mit Hilfe des cksum Befehls kann man die Prüfsumme der Zieldatei mit dem der Quelldatei vergleichen, dass zu dem Schluss, ob die Datenübertragung erfolgreich war oder nicht.
Neben dem CRC-Wert bereitstellt, dieser Befehl erzeugt auch die Dateigröße und Dateinamen in der Ausgabe. Der Befehl Ausgänge mit Status Null bei Erfolg und alle anderen Statuswert zeigt einen Fehler.
Man kann eine detaillierte Informationen über diesen Befehl erhalten, indem Sie die folgende an der Eingabeaufforderung eingeben:
cksum Befehl Beispiele
1. Ein einfaches Beispiel
Auf einer sehr einfachen Ebene kann der cksum Befehl verwendet werden für eine Datei die Prüfsumme angezeigt werden soll.
Der erste Wert (große Nummer) in der Ausgabe über die Prüfsumme für die Datei, dann wir die Größe der Datei und schließlich den Namen der Datei.
2. Checksum ändert sich mit Änderung des Inhalts
Die Testdatei ‚testfile.txt‘ hat folgenden Inhalt:
Um die Prüfsumme der Testdatei zu berechnen, übergeben Sie es als Argument für den cksum Befehl ein:
Nun ändern Sie den Inhalt der Datei:
passiert wieder die Testdatei als Argument cksum Befehl ein:
So sehen wir, dass mit einer Änderung der Inhalte, die Prüfsumme ändert.
Nun, die oben ist im Grunde auch wahr, und auch für chksum auch. Mal sehen, was es bedeutet:
Überprüfen Sie den Inhalt der Testdatei ‚testfile.txt‘:
Beachten Sie die Prüfsumme:
Nun ändern Sie den Inhalt von nicht tatsächlich das Hinzufügen oder Löschen von etwas, sondern um ein Zeichen mit anderen zu ersetzen, so dass die Größe der Datei gleich bleibt.
So wie Sie sehen können, ersetzt I ‚o‘ mit ‚u‘.
Vergleichen Sie die Prüfsumme jetzt:
So sehen wir, dass die Prüfsumme geändert, auch wenn die Änderung eines Zeichens durch andere ersetzt wurde.
4. Eine unterbrochene Kopie
Angenommen, Sie einen ZIP-Ordner verschiedene Unterordner und Dateien von einem Ort zum anderen kopieren enthält, und aus irgendeinem Grund auch immer der Kopiervorgang wurde unterbrochen, so wie würden Sie überprüfen, ob alles erfolgreich oder nicht kopiert? Nun, cksum macht es möglich, wie wir jetzt wissen, dass im Fall der Teilkopie, die gesamte Prüfsumme des Ziels von dem des Quellordners unterscheiden würde.
Sie können dieses Szenario in der folgenden Art und Weise simulieren:
Ich habe linux.tar.gz und Linux_1.tar.gz aus dem gleichen ‚Linux‘ -Ordner. Der Unterschied ist, dass Linux_1.tar.gz gemacht wurde, als ‚Linux‘ -Ordner eine zusätzliche Textdatei enthalten sind.
Also das obige Szenario simuliert, wenn Linux_1.tar.gz kopiert wurde, aber wurde unterbrochen, wenn nur eine Textdatei in dem Ziel kopiert werden gelassen linux.tar.gz
Nun, wenn ich die Prüfsumme diese beiden Dateien vergleichen, ich sehe
So ist die obige Ausgabe zeigt verschiedene Prüfsummenwerten was darauf hindeutet, falsche Kopie der Datei.
5. Checksum der Standardausgabe
Dieser Befehl bietet eine Funktion, wo in dem Benutzer nur ‚cksum‘ eingeben kann oder ‚cksum-‘ und auf stdin schreiben und dann Strg + D paar Mal drücken. Auf diese Weise cksum gibt die Prüfsumme der Daten am Eingang eingegeben.
Im Beispiel oben berechnet wir tatsächlich die Prüfsumme der Zeichenfolge „Läßt die Prüfsumme überprüfen“.
Aber ich denke, md5sum ist viel besser als die cksum als der Ausgangswert breiten lang ist.
Prüfsumme und CRC sind sehr unterschiedlich und verschiedene Dinge. Prüfsummen sind (unter anderem) in IP-Transfer verwendet, während CRCs oft in internen Dateiintegritätsprüfungen verwendet werden. Checksum ist eine einfache Addition aller Bytes (oder Wörter oder Long-Positionen etc.) einer Datei zusammen und ist nicht unfehlbar. CRC ist viel anspruchsvoller und als Ergebnis viel mehr rechenintensive und sehr viel zuverlässiger transmition Fehler bei der Erkennung. Also, was ist es? Hat cksum eine Prüfsumme oder einen CRC erzeugen? Ich vermute, die erstere als CRC mehr Input Paramater in den Versionen muss ich kenne. RFM.
hilfsbereit, konnte aber CRC genauer in Zukunft Artikel erklären.
Vielen Dank. Es ist hilfreich…
Der einfachste Weg, um eine Prüfsumme zu berechnen, ist durch Exklusiv-ODER-Verknüpfung (ohne Zugabe von carry) alle Bytes. Der nächste Schritt ist durch sie alle hinzufügen. Beide Methoden verwenden manchmal einen voreingestellten Wert oder einen Komplementierung Algorithmus für mathematische Zuverlässigkeitsgründen.
Eine anspruchsvollere Berechnung ist eine CRC (Cyclic Redundancy Check). Wenn geschickt gemacht ist es fast so schnell wie der Bytes addiert. CRC ist eine gut definierte und CCITT standardisierte Methode, so dass keine Begriffsklärung sein kann. CRC sind in 16, 32 und 64 Bit zur Verfügung. Wenn wir wollen, um die Dinge noch zuverlässiger verwenden wir MD5 oder SHA1-Prüfsummen im Bereich von 128 Byte bis zu mehreren Kilobyte. Wir neigen dazu, nicht diese ‚Prüfsummen zu nennen, sondern‚Hash-Werte, aber im Grunde sind sie immer noch Prüfsummen.
Es gibt keinen Unterschied zwischen ‚auf der Festplatte‘ CRC-Prüfsummen und CRC-Prüfsummen in Übertragungssystemen.
Wie kann ich überprüfen, für Bild mit Prüfsumme aus Header ??
nur meine 2 Cent ... Prüfsummen, crc, md5, usw. sie sind alle Integritätsprüfungen. einige haben mehr Kraft als andere.
auf CRC vs Prüfsummen:
Ich neige dazu, ‚Summierung‘ mit Prüfsummenbenutzung zu verknüpfen. Zum Beispiel: gemeinsame Prüfsumme Implementierungen umfassen ein oder das Kompliment Summierung der beide. z.B. Addieren Sie alle Zahlen (einschließlich der Prüfsummenwert) und Sie erhalten 0x00 in den letzten 8 Bits des Akkumulators.
Vergleichen Sie das CRCs, wo es keine Summierung ist. Sein alles Bitverschiebung und XOR-Verknüpfung zu bestimmten Bit-Werte (durch das Polynom und Breite des CRC-Wert bestimmt).
sowieso ... das ist meine These, warum Prüfsummen nicht CRCs ist und deshalb, warum mit einem Programm namens ‚cksum‘ zu berechnen, eine CRC verwirrend ist.
Wenn darüber hinaus cksum wirklich eine CRC durchführt, dann sollten Sie die Breite des CRC zeigen und das Polynom verwendet wird.
Wie wird ein XOR anders Zugabe? Wie verschiebt sich von Multiplikation?
CRC ist nur eine Berechnung, nicht von anderen Methoden. Es macht keinen Sinn, zwischen Berechnungsmethoden zu unterscheiden anders als einige sind stärker als andere. Die 8-Bit-CRC8 und MOD11 sind nur Polynome wie sind MD5 SHA-x, CRC-x, und was nicht. Die Wahl des Polynom hängt von Ihren Bedürfnissen. Sie müssen, um die Leistung (Geschwindigkeit), Zuverlässigkeit und Sicherheit balancieren.