Die Berechnung der CRC32 Prüfsumme einer Datei
Ich versuche, berechnen CRC32 Prüfsumme einer Datei für die Verwendung mit diesem Modul Mod_zip, ich habe versucht, dies zu tun mit PHP
aber leider nicht, auch wenn Sie überschritten wird, nicht effizient sein, für größere Dateien.
Ich habe auch versucht linux cksum
Befehl, aber es berechnet die CRC-Prüfsumme der Datei.
Fand ich, dass perl auf linux kann verwendet werden, um zu berechnen CRC32 einer Datei, falls dies möglich ist, könnte ich mit shell_exec zu importieren, die Ausgabe auf meinem PHP
Anwendung, wie kann ich dies tun?
CRC32 ist nicht ein einziger, einzigartiger Algorithmus. en.wikipedia.org/wiki/CRC32#Commonly_used_and_standardized_CRCs, Die Seite listet 12 verschiedene Varianten, und das ist vor Berücksichtigung der Vorbehandlung und postconditioning.
Es gibt nur eine
Es gibt 4 typische CRC-32s aufgeführt (mit verschiedenen suffix-Buchstaben, ja), und für jede der vier CRC-32s gibt es drei Varianten des Polynoms aufgeführt (vorwärts, rückwärts und Umgekehrt, gegenseitige). Wenn du über diejenigen, die mit big-endian/little-endian, 0s vs 1s Voraussetzung, invertiert/nicht-invertiert post-Zustand, es ist eine Schweinerei. Digest::CRC ( search.cpan.org/~olimaul/Digest-CRC-0.18/lib/Digest/CRC.pm ) führt alle diese, glaube ich, aber die Dokumentation fehlt.
Beachten Sie, dass, wenn Ihr Ziel ist "eine Prüfsumme übereinstimmt ZIP" (oder einige andere spezifische Programm), das ist ein bisschen mehr begrenzt. Ich glaube, die
4 gemeinsame CRC-32s..." Die OP angegeben CRC32 und nicht einer seiner Varianten. Digest::CRC CRC-32, wie Sie erwähnt haben. String::CRC32 auch nicht, CRC-32.
Es gibt nur eine
CRC-32
aufgelistet auf dieser Seite.Es gibt 4 typische CRC-32s aufgeführt (mit verschiedenen suffix-Buchstaben, ja), und für jede der vier CRC-32s gibt es drei Varianten des Polynoms aufgeführt (vorwärts, rückwärts und Umgekehrt, gegenseitige). Wenn du über diejenigen, die mit big-endian/little-endian, 0s vs 1s Voraussetzung, invertiert/nicht-invertiert post-Zustand, es ist eine Schweinerei. Digest::CRC ( search.cpan.org/~olimaul/Digest-CRC-0.18/lib/Digest/CRC.pm ) führt alle diese, glaube ich, aber die Dokumentation fehlt.
Beachten Sie, dass, wenn Ihr Ziel ist "eine Prüfsumme übereinstimmt ZIP" (oder einige andere spezifische Programm), das ist ein bisschen mehr begrenzt. Ich glaube, die
crc32
Methode Digest::CRC wird das tun, denn das ist die häufigste CRC-32 Leute Fragen. (Ich habe gerade verbrannt wurde, wie ich gesehen habe waaaaay zu viele CRC-Implementierungen in der embedded-Welt.)4 gemeinsame CRC-32s..." Die OP angegeben CRC32 und nicht einer seiner Varianten. Digest::CRC CRC-32, wie Sie erwähnt haben. String::CRC32 auch nicht, CRC-32.
InformationsquelleAutor Naveen Gamage | 2013-12-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie sich Digest::CRC? Aus der Dokumentation: "Es enthält eine wrapper-Funktionen mit den richtigen Parametern für das CRC-CCITT, CRC-16, CRC-32 CRC-64, sowie die CRC-verwendet OpenPGP-ASCII-armored-Prüfsumme."
Command-line-usage:
perl script.pl inFile
Hoffe, das hilft!
Sie waren auf der Suche für die hexdigest? Dass die Rendite 8 hex-Ziffern. Das ist die CRC-32 für Dateien. Geändert haben Sie den code zeigen, der hexdigest.
ja, Prüfsumme Aussehen sollte 0x******.
nur bezeichnet, dass eine Hexadezimalzahl folgt; es ist nicht Teil der Prüfsumme. Normale CRC-32-8 hexadezimal-Ziffern: 0x******** Die
$ctx->hexdigest
oben gibt.ja, ich bekomme es jetzt, auch die mod_zip Modul führt eine CRC32-Wert, ohne 0x. vielen Dank für die Hilfe.
InformationsquelleAutor Kenosis