Wann ist es angebracht zu verwenden CRC für die Fehlererkennung versus moderne Hash-Funktionen wie MD5 oder SHA1? Der ehemalige einfacher zu implementieren, die auf embedded-hardware?
CRC funktioniert gut für die Erkennung von zufälligen Fehlern in den Daten auftreten könnten, die zum Beispiel von Netzwerk-Störungen, Linie, Lärm, Verzerrung, etc.
CRC ist rechnerisch sehr viel weniger aufwendig, als MD5 oder SHA1. Eine hash-Funktion wie MD5, das ist wahrscheinlich overkill für zufällige Fehler-Erkennung. Aber mit CRC für jede Art von Sicherheits-check wäre viel weniger sicher als ein komplexer Hash-Funktion wie MD5.
Und ja, CRC ist viel einfacher zu implementieren, die auf embedded-hardware, kann man sogar verschiedene Lösungspakete für diese auf-IC.
CRC ist so konzipiert, gegen unbeabsichtigte änderungen in den Daten.
Das heißt, es ist gut für die Erkennung von unabsichtlichen Fehlern, sondern wird nutzlos als eine Möglichkeit, Geld sicher ein Daten war nicht boshaft behandelt.
Ich eine Studie gefunden, die zeigt, dass wie unangemessen CRC hashes für die hash-Tabellen. Es erklärt auch die tatsächlichen Eigenschaften des Algorithmus. Die Studie umfasst auch die Bewertung der anderen hash-algorithmen und ist eine gute Referenz zu halten.
Relevanten Abschluss auf CRC hashes für:
CRC32 nie vorgesehen war, für die hash-Tabelle verwenden. Es gibt wirklich keinen guten Grund, Sie verwenden es für diesen Zweck, und ich empfehle, dass Sie vermeiden, dies zu tun.
Wenn Sie sich entscheiden, CRC32, ist es entscheidend, dass Sie die hash-bits, die von dem gegenüberliegenden Ende, in dem der Schlüssel-Bytes zugeführt. Welches Ende das ist, hängt von der speziellen CRC32 Umsetzung. Nicht behandeln, CRC32 als "black box" hash-Funktion, und verwenden Sie es nicht als eine general purpose hash. Testen Sie jede Anwendung auf EIGNUNG.
Lief ich jede Zeile PHP-code in 1.000.000 Schleife. Die Ergebnisse sind in den Kommentaren (#).
hash('crc32', 'The quick brown fox jumped over the lazy dog.');# 750ms 8 chars
hash('crc32b','The quick brown fox jumped over the lazy dog.');# 700ms 8 chars
hash('md5', 'The quick brown fox jumped over the lazy dog.');# 770ms 32 chars
hash('sha1', 'The quick brown fox jumped over the lazy dog.');# 880ms 40 chars
hash('sha256','The quick brown fox jumped over the lazy dog.');# 1490ms 64 chars
hash('sha384','The quick brown fox jumped over the lazy dog.');# 1830ms 96 chars
hash('sha512','The quick brown fox jumped over the lazy dog.');# 1870ms 128 chars
Es sei denn, jemand geht, zu versuchen, und ändern Sie Ihre Daten in böswilliger Absicht und ausblenden, die änderung CRC ist ausreichend. Benutzen Sie einfach eine "Gute" (standard) polinomial.
Ihnen nicht sagen, was es ist, dass Sie versuchen, zu schützen.
Einen CRC wird oft in embedded-Systemen als check gegen versehentliche Beschädigung von Daten im Gegensatz zu verhindern schädliche system änderung. Beispiele der Orte, an denen eine CRC kann nützlich sein, ist zu überprüfen ein EPROM-image während der system-Initialisierung zum Schutz gegen firmware-Korruption. Das system bootloader berechnen Sie den CRC für die Anwendungs-Codes und vergleichen Sie mit den gespeicherten Wert, bevor Sie den code ausführen. Dies schützt gegen die Möglichkeit des zufälligen Programm Korruption oder einen fehlgeschlagenen download.
Eines CRC kann auch verwendet werden, in ähnlicher Weise zu schützen gespeicherten Konfigurationsdaten in FLASH-oder EEPROM. Wenn die CRC falsch ist, dann werden die Daten gekennzeichnet werden können, als ungültig und eine Standard-oder die backup-Daten verwendet wird. Die CRC kann unwirksam sein wegen Geräteausfall, oder wenn der Benutzer entfernt, macht bei einem update der Konfigurationsdaten speichern.
Gab es Kommentare, dass ein hash bietet eine größere Wahrscheinlichkeit für die Aufdeckung von Korruption als eines CRC mit mehrfach-bit-Fehler. Das ist wahr, und die Entscheidung, ob oder nicht, um eine 16-oder 32-bit-CRC-Scharnier auf die Sicherheit Folgen eines beschädigten Datenblock verwendet wird und ob Sie sich rechtfertigen lässt, die 1 in 2^16 oder 2^32 chance auf einen Datenbaustein, der fälschlicherweise für ungültig erklärt.
Viele Geräte verfügen über einen eingebauten CRC-generator für standard-algorithmen. Die MSP430F5X-Serie von Texas haben eine hardware-Implementierung des CRC-CCITT-Standard.
Nur verwenden CRC-wenn-Berechnung-Ressourcen sind sehr eng (d.h. einige embed-Umgebungen) oder die Sie benötigen, zu lagern/transportieren viele output-Werte und Speicherplatz/Bandbreite knapp ist (wie CRCs sind in der Regel 32-bit, wo ein MD5-Ausgabe 128-bit SHA1 160 bit, und die anderen SHA-Varianten mit bis zu 512 bit).
Verwenden Sie niemals CRC für Sicherheits-checks wie ein CRC ist sehr leicht zu "fälschen".
Sogar für die zufälligen Fehler-Erkennung (und nicht als bösartige change detection) hashes sind besser als eine einfache CRC. Teilweise wegen der einfachen Art und Weise eine CRC berechnet wird (und teilweise, weil die CRC-Werte sind gewöhnlich kürzer als die üblichen hash-Ausgänge, so haben Sie einen viel kleineren Bereich der möglichen Werte) ist es viel wahrscheinlicher, dass in einer situation, wo es zwei oder mehr Fehler, ein Fehler-Maske anderen, so dass Sie am Ende mit den gleichen CRC-trotz zwei Fehlern.
Kurz gesagt: es sei denn, Sie haben Grund nicht verwenden eine anständige hash-Algorithmus, vermeiden Sie einfache CRCs.
CRC32 ist so schneller und manchmal hat die hardware-Unterstützung (d.h. auf Nehalem-Prozessoren). Wirklich, das einzige mal, Sie würde es nutzen, wenn Sie die Verknüpfung mit der hardware, oder wenn Sie wirklich dicht auf Leistung
Stieß ich auf eine Verwendung des CRC vor kurzem, die war schlau. Der Autor des jdupe doppelte Dateien identifizieren und entfernen-tool (der gleiche Autor der beliebten exif-tool jhead) verwendet es während des ersten Durchgangs durch die Dateien. Ein CRC wird berechnet auf der ersten 32 Kb jeder Datei, um Dateien zu markieren, die gleich erscheinen, auch müssen die Dateien haben die gleiche Größe. Diese Dateien werden Hinzugefügt, um eine Liste der Dateien, von denen zu tun, eine vollständige Binär-Vergleich. Es beschleunigt die Prüfung von großen media-Dateien.
first published in 1993 (als SHA-0), dann 1995 als SHA-1,
Serie: SHA-0, SHA-1, SHA-2, SHA-3,
Zusammenfassend, die Verwendung von SHA-1 nicht mehr als sicher gegen gut finanzierte Gegner, weil im Jahr 2005, Kryptoanalytiker gefunden Angriffe auf SHA-1, die nahelegt, kann es nicht sicher genug für die laufende Nutzungschneier. US-NIST beraten, die Bundesbehörden sollten nicht mehr verwendet SHA1-1 für die Anwendung, die erfordern Kollision Widerstand und müssen mit SHA-2 nach 2010NIST.
Daher, wenn Sie schauen, für eine einfache und schnelle Lösung für die überprüfung der Integrität von Dateien (gegen Korruption), oder ein paar einfache caching-Zwecke in Bezug auf die Leistung, die Sie betrachten können CRC-32, der für das Hashen können Sie erwägen, die Verwendung von MD5, aber wenn Sie die Entwicklung professioneller Anwendung (die sollte sicher und konsequent), um zu vermeiden jede Kollision Wahrscheinlichkeiten - verwenden SHA-2 und höher (wie SHA-3).
Leistung
Einige einfache benchmark-test in PHP:
# Testing static text.
$ time php -r 'for ($i=0;$i<1000000;$i++) crc32("foo");'
real 0m0.845s
user 0m0.830s
sys 0m0.008s
$ time php -r 'for ($i=0;$i<1000000;$i++) md5("foo");'
real 0m1.103s
user 0m1.089s
sys 0m0.009s
$ time php -r 'for ($i=0;$i<1000000;$i++) sha1("foo");'
real 0m1.132s
user 0m1.116s
sys 0m0.010s
# Testing random number.
$ time php -r 'for ($i=0;$i<1000000;$i++) crc32(rand(0,$i));'
real 0m1.754s
user 0m1.735s
sys 0m0.012s\
$ time php -r 'for ($i=0;$i<1000000;$i++) md5(rand(0,$i));'
real 0m2.065s
user 0m2.042s
sys 0m0.015s
$ time php -r 'for ($i=0;$i<1000000;$i++) sha1(rand(0,$i));'
real 0m2.050s
user 0m2.021s
sys 0m0.015s
In der Kryptographie, ein hashing-Algorithmus wandelt viele bits auf wenige bits durch eine digest-Betrieb. Hashes werden verwendet, um zu bestätigen, Integrität von Nachrichten und Dateien.
Alle hashing-algorithmen generieren Kollisionen. Eine Kollision, wenn mehrere viele-bit-Kombinationen erzeugen den gleichen weniger-bit-Ausgabe. Die Kryptographische Stärke eines hashing-Algorithmus, der definiert ist durch die Unfähigkeit, für einen einzelnen zu bestimmen, was die Ausgabe sein wird für eine gegebene Eingabe, denn wenn Sie könnte, Sie könnte konstruieren eine Datei mit einem hash entspricht, eine legitime Datei und der Kompromiss angenommen Integrität des Systems.
Der Unterschied zwischen CRC32 und MD5, MD5 erzeugt eine größere hash-das ist schwerer zu prognostizieren.
Wenn Sie möchten, implementieren message integrity, d.h. die Nachricht nicht manipuliert wurde in transit - die Unfähigkeit, um vorherzusagen, das auftreten von Kollisionen ist eine wichtige Eigenschaft. Ein 32-bit-hash - beschreiben kann 4 Milliarden verschiedene Nachrichten oder Dateien über 4 Milliarden verschiedene eindeutige hashes. Wenn Sie 4 Milliarden und 1-Dateien, Sie werden garantiert 1 Kollision. 1 TB Bitspace hat die Möglichkeit, Milliarden von Kollisionen. Wenn ich bin ein Angreifer und ich kann Vorhersagen, was das 32 bit-hash sein wird, kann ich konstruieren Sie eine infizierte Datei, kollidiert mit der target-Datei; das hat den gleichen hash.
Außerdem, wenn ich Tue, 10 Mbps übertragung dann die Möglichkeit, ein Paket beschädigt bekommen genau das richtige zu umgehen, crc32 und weiter entlang der zum Ziel und ausführen sehr gering ist. Sagen wir um 10 bekomme ich 10 Fehler\zweite. Wenn ich die Rampe, die bis zu 1Gbit /s, jetzt bin ich immer als 1.000 Fehler pro Sekunde. Wenn ich den ram bis zu 1 exabit pro Sekunde, dann habe ich eine Fehlerquote von 1,000,000,000 Fehler pro Sekunde. Sagen wir, wir haben eine collission rate von 1\1,000,000 übertragungsfehler, also 1 zu einer million übertragungsfehler Ergebnisse in der korrupten Daten immer durch unentdeckt. Bei 10 würd ich die Fehlermeldung gesendeten Daten alle 100.000 Sekunden oder etwa einmal am Tag. Bei 1gbps, es würde passieren, wenn alle 5 Minuten. Bei 1 exabit pro Sekunde, wir reden mehrmals in der Sekunde.
Wenn Sie pop öffnen wireshark sehen Sie Ihre typische ethernet-header hat eine CRC32, Ihre IP-header hat eine CRC32, und der TCP-Header hat eine CRC32, und das ist zusätzlich zu dem, was die höheren layer-Protokolle tun können; z.B. IPSEC verwenden könnte, MD5 oder SHA für die Integrität überprüfen zusätzlich zu den oben genannten. Es gibt mehrere Ebenen der Fehlerprüfung im typischen Netzwerk-Kommunikation, und Sie NOCH den Gag jetzt wieder in der sub-10-Mbps-Geschwindigkeiten.
Cyclic Redundancy Check (CRC) hat mehrere gemeinsame Versionen und mehrere ungewöhnlich, aber in der Regel ist entworfen, um einfach sagen, Wann eine Nachricht oder eine Datei beschädigt wurde (mehrere bits kippen). CRC32 selbst ist nicht eine sehr gute Fehlerprüfung Protokoll nach heutigen Maßstäben, in großen, Skalare enterprise-Umgebungen, da die Kollision-rate, die Durchschnittliche Nutzer-Festplatte kann nach oben von 100k Dateien und Datei-Freigaben auf ein Unternehmen haben können zig Millionen. Das Verhältnis von hash-Raum, um die Anzahl der Dateien ist einfach zu gering. CRC32 ist rechnerisch Billig zu impliment in der Erwägung, dass MD5 nicht.
MD5 wurde entwickelt, um zu stoppen vorsätzlichen Einsatz von Stößen, um eine schädliche Datei Aussehen malignen. Es gilt als unsicher, weil der hashspace ausreichend abgebildet zu ermöglichen, einige Angriffe zu treten, und einige Stößen sind preditable. SHA1 und SHA2 sind die new kids on the block.
Für die Datei-überprüfung, Md5 ist am Anfang durch eine Menge von Anbietern, weil Sie tun können, multigigabyte Dateien oder multiterrabyte Dateien schnell mit es und zu stapeln, dass ontop der Allgemeinen OS-Nutzung und Unterstützung von CRC32 ist. Seien Sie nicht überrascht, wenn innerhalb des nächsten Jahrzehnts Dateisysteme beginnen mit MD5 für die Fehlerprüfung.
CRC funktioniert gut für die Erkennung von zufälligen Fehlern in den Daten auftreten könnten, die zum Beispiel von Netzwerk-Störungen, Linie, Lärm, Verzerrung, etc.
CRC ist rechnerisch sehr viel weniger aufwendig, als MD5 oder SHA1. Eine hash-Funktion wie MD5, das ist wahrscheinlich overkill für zufällige Fehler-Erkennung. Aber mit CRC für jede Art von Sicherheits-check wäre viel weniger sicher als ein komplexer Hash-Funktion wie MD5.
Und ja, CRC ist viel einfacher zu implementieren, die auf embedded-hardware, kann man sogar verschiedene Lösungspakete für diese auf-IC.
InformationsquelleAutor der Antwort defines
CRC ist so konzipiert, gegen unbeabsichtigte änderungen in den Daten.
Das heißt, es ist gut für die Erkennung von unabsichtlichen Fehlern, sondern wird nutzlos als eine Möglichkeit, Geld sicher ein Daten war nicht boshaft behandelt.
Siehe auch diese.
InformationsquelleAutor der Antwort Liran Orevi
Ich eine Studie gefunden, die zeigt, dass wie unangemessen CRC hashes für die hash-Tabellen. Es erklärt auch die tatsächlichen Eigenschaften des Algorithmus. Die Studie umfasst auch die Bewertung der anderen hash-algorithmen und ist eine gute Referenz zu halten.
Relevanten Abschluss auf CRC hashes für:
UPDATE
Es scheint, die Seite ist down. Die internet-Archiv hat eine Kopie obwohl.
InformationsquelleAutor der Antwort Andre Luus
Lief ich jede Zeile PHP-code in 1.000.000 Schleife. Die Ergebnisse sind in den Kommentaren (#).
Mein Fazit:
Sie kümmern sich nicht um die Sicherheit.
Verwenden "sha256" (oder höher), wenn Sie Sie brauchen zusätzliche Sicherheit Schicht.
Nicht mit "md5" oder "sha1", weil Sie:
InformationsquelleAutor der Antwort Martin
Für die CRC-Informationen über die Umsetzung, die Geschwindigkeit und die Zuverlässigkeit sehen Ein painless guide to CRC error detection algorithmen. Es hat alles, was auf SFB.
Es sei denn, jemand geht, zu versuchen, und ändern Sie Ihre Daten in böswilliger Absicht und ausblenden, die änderung CRC ist ausreichend. Benutzen Sie einfach eine "Gute" (standard) polinomial.
InformationsquelleAutor der Antwort Gerhard
Ihnen nicht sagen, was es ist, dass Sie versuchen, zu schützen.
Einen CRC wird oft in embedded-Systemen als check gegen versehentliche Beschädigung von Daten im Gegensatz zu verhindern schädliche system änderung. Beispiele der Orte, an denen eine CRC kann nützlich sein, ist zu überprüfen ein EPROM-image während der system-Initialisierung zum Schutz gegen firmware-Korruption. Das system bootloader berechnen Sie den CRC für die Anwendungs-Codes und vergleichen Sie mit den gespeicherten Wert, bevor Sie den code ausführen. Dies schützt gegen die Möglichkeit des zufälligen Programm Korruption oder einen fehlgeschlagenen download.
Eines CRC kann auch verwendet werden, in ähnlicher Weise zu schützen gespeicherten Konfigurationsdaten in FLASH-oder EEPROM. Wenn die CRC falsch ist, dann werden die Daten gekennzeichnet werden können, als ungültig und eine Standard-oder die backup-Daten verwendet wird. Die CRC kann unwirksam sein wegen Geräteausfall, oder wenn der Benutzer entfernt, macht bei einem update der Konfigurationsdaten speichern.
Gab es Kommentare, dass ein hash bietet eine größere Wahrscheinlichkeit für die Aufdeckung von Korruption als eines CRC mit mehrfach-bit-Fehler. Das ist wahr, und die Entscheidung, ob oder nicht, um eine 16-oder 32-bit-CRC-Scharnier auf die Sicherheit Folgen eines beschädigten Datenblock verwendet wird und ob Sie sich rechtfertigen lässt, die 1 in 2^16 oder 2^32 chance auf einen Datenbaustein, der fälschlicherweise für ungültig erklärt.
Viele Geräte verfügen über einen eingebauten CRC-generator für standard-algorithmen. Die MSP430F5X-Serie von Texas haben eine hardware-Implementierung des CRC-CCITT-Standard.
InformationsquelleAutor der Antwort ʎəʞo uɐɪ
CRC32 ist schneller und der hash ist nur 32 bit lang.
Verwenden Sie es, wenn Sie wollen einfach nur eine schnelle und leichte Prüfsumme. CRC im ethernet.
Wenn du mehr brauchst Zuverlässigkeit es ist vorzuziehen, verwenden eine moderne Hash-Funktion.
InformationsquelleAutor der Antwort François
Nur verwenden CRC-wenn-Berechnung-Ressourcen sind sehr eng (d.h. einige embed-Umgebungen) oder die Sie benötigen, zu lagern/transportieren viele output-Werte und Speicherplatz/Bandbreite knapp ist (wie CRCs sind in der Regel 32-bit, wo ein MD5-Ausgabe 128-bit SHA1 160 bit, und die anderen SHA-Varianten mit bis zu 512 bit).
Verwenden Sie niemals CRC für Sicherheits-checks wie ein CRC ist sehr leicht zu "fälschen".
Sogar für die zufälligen Fehler-Erkennung (und nicht als bösartige change detection) hashes sind besser als eine einfache CRC. Teilweise wegen der einfachen Art und Weise eine CRC berechnet wird (und teilweise, weil die CRC-Werte sind gewöhnlich kürzer als die üblichen hash-Ausgänge, so haben Sie einen viel kleineren Bereich der möglichen Werte) ist es viel wahrscheinlicher, dass in einer situation, wo es zwei oder mehr Fehler, ein Fehler-Maske anderen, so dass Sie am Ende mit den gleichen CRC-trotz zwei Fehlern.
Kurz gesagt: es sei denn, Sie haben Grund nicht verwenden eine anständige hash-Algorithmus, vermeiden Sie einfache CRCs.
InformationsquelleAutor der Antwort David Spillett
CRC32 ist so schneller und manchmal hat die hardware-Unterstützung (d.h. auf Nehalem-Prozessoren). Wirklich, das einzige mal, Sie würde es nutzen, wenn Sie die Verknüpfung mit der hardware, oder wenn Sie wirklich dicht auf Leistung
InformationsquelleAutor der Antwort Paul Betts
Stieß ich auf eine Verwendung des CRC vor kurzem, die war schlau. Der Autor des jdupe doppelte Dateien identifizieren und entfernen-tool (der gleiche Autor der beliebten exif-tool jhead) verwendet es während des ersten Durchgangs durch die Dateien. Ein CRC wird berechnet auf der ersten 32 Kb jeder Datei, um Dateien zu markieren, die gleich erscheinen, auch müssen die Dateien haben die gleiche Größe. Diese Dateien werden Hinzugefügt, um eine Liste der Dateien, von denen zu tun, eine vollständige Binär-Vergleich. Es beschleunigt die Prüfung von großen media-Dateien.
InformationsquelleAutor der Antwort John Wright
Es hängt alles von Ihren Anforderungen und Erwartung.
Hier sind schnelle kurze Unterschiede zwischen diesen hash-Funktion algorithmen:
CRC (CRC-8/16/32/64)
MD5
SHA-1
Serie: SHA-0, SHA-1, SHA-2, SHA-3,
Zusammenfassend, die Verwendung von SHA-1 nicht mehr als sicher gegen gut finanzierte Gegner, weil im Jahr 2005, Kryptoanalytiker gefunden Angriffe auf SHA-1, die nahelegt, kann es nicht sicher genug für die laufende Nutzungschneier. US-NIST beraten, die Bundesbehörden sollten nicht mehr verwendet SHA1-1 für die Anwendung, die erfordern Kollision Widerstand und müssen mit SHA-2 nach 2010NIST.
Daher, wenn Sie schauen, für eine einfache und schnelle Lösung für die überprüfung der Integrität von Dateien (gegen Korruption), oder ein paar einfache caching-Zwecke in Bezug auf die Leistung, die Sie betrachten können CRC-32, der für das Hashen können Sie erwägen, die Verwendung von MD5, aber wenn Sie die Entwicklung professioneller Anwendung (die sollte sicher und konsequent), um zu vermeiden jede Kollision Wahrscheinlichkeiten - verwenden SHA-2 und höher (wie SHA-3).
Leistung
Einige einfache benchmark-test in PHP:
Verwandte:
InformationsquelleAutor der Antwort kenorb
Können mit den Grundlagen beginnen.
In der Kryptographie, ein hashing-Algorithmus wandelt viele bits auf wenige bits durch eine digest-Betrieb. Hashes werden verwendet, um zu bestätigen, Integrität von Nachrichten und Dateien.
Alle hashing-algorithmen generieren Kollisionen. Eine Kollision, wenn mehrere viele-bit-Kombinationen erzeugen den gleichen weniger-bit-Ausgabe. Die Kryptographische Stärke eines hashing-Algorithmus, der definiert ist durch die Unfähigkeit, für einen einzelnen zu bestimmen, was die Ausgabe sein wird für eine gegebene Eingabe, denn wenn Sie könnte, Sie könnte konstruieren eine Datei mit einem hash entspricht, eine legitime Datei und der Kompromiss angenommen Integrität des Systems.
Der Unterschied zwischen CRC32 und MD5, MD5 erzeugt eine größere hash-das ist schwerer zu prognostizieren.
Wenn Sie möchten, implementieren message integrity, d.h. die Nachricht nicht manipuliert wurde in transit - die Unfähigkeit, um vorherzusagen, das auftreten von Kollisionen ist eine wichtige Eigenschaft. Ein 32-bit-hash - beschreiben kann 4 Milliarden verschiedene Nachrichten oder Dateien über 4 Milliarden verschiedene eindeutige hashes. Wenn Sie 4 Milliarden und 1-Dateien, Sie werden garantiert 1 Kollision. 1 TB Bitspace hat die Möglichkeit, Milliarden von Kollisionen. Wenn ich bin ein Angreifer und ich kann Vorhersagen, was das 32 bit-hash sein wird, kann ich konstruieren Sie eine infizierte Datei, kollidiert mit der target-Datei; das hat den gleichen hash.
Außerdem, wenn ich Tue, 10 Mbps übertragung dann die Möglichkeit, ein Paket beschädigt bekommen genau das richtige zu umgehen, crc32 und weiter entlang der zum Ziel und ausführen sehr gering ist. Sagen wir um 10 bekomme ich 10 Fehler\zweite. Wenn ich die Rampe, die bis zu 1Gbit /s, jetzt bin ich immer als 1.000 Fehler pro Sekunde. Wenn ich den ram bis zu 1 exabit pro Sekunde, dann habe ich eine Fehlerquote von 1,000,000,000 Fehler pro Sekunde. Sagen wir, wir haben eine collission rate von 1\1,000,000 übertragungsfehler, also 1 zu einer million übertragungsfehler Ergebnisse in der korrupten Daten immer durch unentdeckt. Bei 10 würd ich die Fehlermeldung gesendeten Daten alle 100.000 Sekunden oder etwa einmal am Tag. Bei 1gbps, es würde passieren, wenn alle 5 Minuten. Bei 1 exabit pro Sekunde, wir reden mehrmals in der Sekunde.
Wenn Sie pop öffnen wireshark sehen Sie Ihre typische ethernet-header hat eine CRC32, Ihre IP-header hat eine CRC32, und der TCP-Header hat eine CRC32, und das ist zusätzlich zu dem, was die höheren layer-Protokolle tun können; z.B. IPSEC verwenden könnte, MD5 oder SHA für die Integrität überprüfen zusätzlich zu den oben genannten. Es gibt mehrere Ebenen der Fehlerprüfung im typischen Netzwerk-Kommunikation, und Sie NOCH den Gag jetzt wieder in der sub-10-Mbps-Geschwindigkeiten.
Cyclic Redundancy Check (CRC) hat mehrere gemeinsame Versionen und mehrere ungewöhnlich, aber in der Regel ist entworfen, um einfach sagen, Wann eine Nachricht oder eine Datei beschädigt wurde (mehrere bits kippen). CRC32 selbst ist nicht eine sehr gute Fehlerprüfung Protokoll nach heutigen Maßstäben, in großen, Skalare enterprise-Umgebungen, da die Kollision-rate, die Durchschnittliche Nutzer-Festplatte kann nach oben von 100k Dateien und Datei-Freigaben auf ein Unternehmen haben können zig Millionen. Das Verhältnis von hash-Raum, um die Anzahl der Dateien ist einfach zu gering. CRC32 ist rechnerisch Billig zu impliment in der Erwägung, dass MD5 nicht.
MD5 wurde entwickelt, um zu stoppen vorsätzlichen Einsatz von Stößen, um eine schädliche Datei Aussehen malignen. Es gilt als unsicher, weil der hashspace ausreichend abgebildet zu ermöglichen, einige Angriffe zu treten, und einige Stößen sind preditable. SHA1 und SHA2 sind die new kids on the block.
Für die Datei-überprüfung, Md5 ist am Anfang durch eine Menge von Anbietern, weil Sie tun können, multigigabyte Dateien oder multiterrabyte Dateien schnell mit es und zu stapeln, dass ontop der Allgemeinen OS-Nutzung und Unterstützung von CRC32 ist. Seien Sie nicht überrascht, wenn innerhalb des nächsten Jahrzehnts Dateisysteme beginnen mit MD5 für die Fehlerprüfung.
InformationsquelleAutor der Antwort bobinator
CRC-code ist einfacher und schneller.
Für was brauchen Sie?
InformationsquelleAutor der Antwort Macarse