Python Crc32

Ammar Ali 21 Juni 2023
Python Crc32

In diesem Tutorial wird die Berechnung des crc32 von Daten mit der Bibliothek binascii oder zlib in Python behandelt.

Python-CRC32

Der CRC32 ist die Prüfsumme von Daten, auch bekannt als zyklische Redundanzprüfung, die verwendet wird, um Fehler zu überprüfen, die in einer digitalen Datenübertragung vorhanden sind. Bei der digitalen Übertragung können sich die Daten am Ausgang in Bezug auf die Daten am Eingang aufgrund von Rauschen oder Interferenzen ändern, und um zu überprüfen, ob sich die Daten am Ausgang der Übertragung geändert haben, können wir den CRC32 verwenden, um den Unterschied im zu finden Prüfsumme der Daten am Ein- und Ausgang.

Wenn die Differenz zwischen der Eingangs- und der Ausgangsprüfsumme der Daten Null ist, liegt kein Fehler in der Übertragung vor, und die Daten am Ausgang sind die gleichen wie die Daten am Eingang der Übertragung. Die Prüfsumme der Daten stellt die Anzahl der vorhandenen Bits dar und wird vor dem Senden an die Datei angehängt.

Wir kennen bereits die Prüfsumme der Eingabedaten, wir müssen nur die Prüfsumme der Ausgabedaten finden, und ihre Differenz gibt uns Aufschluss über den in den Daten vorhandenen Fehler. Wir können die Funktion crc32() der Bibliothek binascii oder zlib() verwenden, um den CRC32 oder die Prüfsumme der Daten zu finden.

Wir müssen die Daten in Bytes innerhalb der Funktion crc32() übergeben und die Funktion gibt die 32-Bit-Ganzzahl ohne Vorzeichen dieser Daten zurück. Wenn die Eingabedaten nicht vom Datentyp Byte sind, müssen wir sie in Byte konvertieren, bevor wir sie an die Funktion crc32() übergeben.

Wenn der innerhalb der Funktion crc32() übergebene Eingabewert Null ist, ist die Ausgabe ebenfalls Null. Lassen Sie uns zum Beispiel die Bibliotheken binascii und zlib verwenden, um die CRC32-Prüfsumme einer Zeichenfolge zu finden.

Siehe Code unten.

import binascii
import zlib

crc1 = binascii.crc32(b"abcd")
crc2 = zlib.crc32(b"abcd")
print(crc1)
print(crc2)

Ausgang:

3984772369
3984772369

Im obigen Code haben wir das Zeichen b in der Funktion crc32() verwendet, um den String in Bytes umzuwandeln. Der Algorithmus, der zum Ermitteln der Prüfsumme verwendet wird, ist kein kryptografischer Algorithmus und nicht ganz genau, sodass er nicht für Hashing-Zwecke verwendet werden kann.

Der obige Code wurde in Python 3 getestet und gibt eine 32-Bit-Ganzzahl ohne Vorzeichen zurück, aber wenn wir denselben Code in Python 2 ausführen, ist das Ergebnis eine 32-Bit-Ganzzahl mit Vorzeichen, und beide Ergebnisse sind nicht gleich. Um das Ergebnis von Python 2 in unsigned umzuwandeln, müssen wir das bitweise UND der Ausgabe mit 0xffffffff unter Verwendung des Zeichens & setzen.

Die binascii-Bibliothek kann Daten von binär nach ASCII umwandeln, ebenso wie binär nach hexadezimal. Es kann den obigen Bytewert mit seiner Funktion b2a_hex() in Hexadezimal umwandeln.

Die Bibliothek zlib kann Daten komprimieren und dekomprimieren.

Autor: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

Verwandter Artikel - Python Checksum