-
QUERVERWEIS
AUF VERWANDTE ANMELDUNGEN
-
Diese
Anmeldung bezieht sich auf die vorläufigen US-Anmeldung Nr. 60/568,304, eingereicht
am 04. Mai 2004, und die vorläufige
US- Anmeldung Nr. 60/603,604, eingereicht am 23. August 2004. Der
gesamte Inhalt der oben genannten Anmeldungen wird durch Bezugnahme
hierin beinhaltet.
-
Der
Stand der Technik legt verschiedene Zweige von Komprimierungsalgorithmen
offen. Statistische Verfahren der Komprimierung verließen sich
auf die Reduzierung der Größe von häufigen Strukturen
in Daten. Die Komprimierung basierte auf der Redundanz der Daten
und involvierte oft die Arbeit von Shannon und anderen. Es gab praktische
Grenzen für
die Komprimierung von Daten durch Redundanz.
-
Der
Stand der Technik bei der Komprimierung ist statistisch. Die Komprimierung
basiert auf einer Redundanzmodellierung. Die vorliegende Erfindung
ermöglicht
die Verwendung von Prüfsummen
um zu bestimmen, ob eine Zahl in einer Zahlensequenz mit einer vorgegebenen
Prüfsumme übereinstimmt
und um Dateien zu verkleinern. Derzeitig sind die Dateien durch
die Menge an Redundanz, die entfernt werden kann, begrenzt. Ein
Prüfsummen-Komprimierer
würde operieren
basierend wie einzigartig eine Zahl ist gemäß der Einzigartigkeit der Prüfsumme – d.h. dass
es nur eine Prüfsummenzahl
gibt, die einer vorgegebenen Zahl zugeordnet werden kann.
-
"Message Digests" wurden erstellt,
um zu verifizieren, dass es sich bei den Daten um die Originaldaten handelt
und dass bei der Übertragung
keine Änderungen
auftraten. Sie können verwendet
werden, um sicherzustellen, dass die Computerdateien nicht modifiziert
wurden. Heute werden hauptsächlich
zwei Message Digests und Signatur-Hashes verwendet, Secure-Hash-Algorithmus
("SHA") und Message Digest-Algorithmus Nr.
5 ("MD5"). MD5 ist einer
der ersten geschaffenen Message Digest-Algorithmen und wurde von Rivest-Shamir-Adleman ("RSA") entwickelt. Wie
beim Stand der Technik bekannt ist, hat MD5 ein Problem mit Datenkollisionen,
und es wird keine Einzigartigkeit, wie bei SHA garantiert.
-
SHA
wurde von der US- Regierung (N.S.A) für das Fingerprinting von Computerdaten
entwickelt. Die Regierung entwickelte SHA als ein Mittel zur Überprüfung digitaler
Informationen. SHA ist ein Streben nach Erzeugung eines einzigartigen
Schlüssels
oder Hashs für
einen vorgegebenen Satz von Daten. Eines der Hauptinteressen der
Regierung ist das Nachverfolgen von Daten und die Übertragung
von Daten. Es gibt viele Open-Source-Implementationen des SHA-Algorithmus' im C und C++ Code.
-
Dies
ist ein Hinweis der US-Regierung über die SHA-Sicherheit. Es sollte jedoch nicht als
eine Erklärung
der US-Regierung betrachtet werden.
-
Dieses
Dokument spezifiziert einen Sicheren Hash-Algorithmus, SHA-1, für das Verarbeiten
einer verdichtenden Darstellung einer Nachricht oder einer Datendatei.
Wenn eine Nachricht einer beliebigen Länge < 2^64 Bits der Input ist, produziert
das SHA-1 einen 160-Bit Output, der Message Digest genannt wird.
Der Message Digest ist dann zum Beispiel der Input für einen
Signatur-Algorithmus, der die Signatur für die Nachricht erzeugt oder
verifiziert. Das Signieren des Message Digests statt der Nachricht
verbessert oft die Effizienz des Prozesses, da der Message Digest
gewöhnlich
viel kleiner als die Nachricht ist. Der gleiche Hash-Algorithmus muss
vom Überprüfer der
digitalen Signatur verwendet werden, der auch vom Ersteller der
digitalen Signatur eingesetzt wurde. Alle Änderungen an der Nachricht
auf dem Transportweg wird mit sehr hoher Wahrscheinlichkeit zu einem
anderen Message Digest führen,
und die Signaturüberprüfung wird
fehlschlagen.
-
Das
SHA-1 wird sicher genannt, weil es verarbeitungsmäßig undurchführbar ist,
eine Nachricht zu finden, die mit einem vorgegebenen Message Digest übereinstimmt
oder zwei unterschiedliche Nachrichten zu finden, die den gleichen
Message Digest produzieren. Alle Änderungen an einer Nachricht
auf dem Transportweg werden mit sehr hoher Wahrscheinlichkeit zu
einem anderen Message Digest führen,
und die Signaturüberprüfung wird
fehlschlagen.
-
Sowohl
SHA als auch MD5 sind dem Stand der Technik bekannt und eine weitere
Beschreibung ist hierin nicht enthalten.
-
ZUSAMMENFASSUNG
-
Das
Streben nach Einzigartigkeit von Daten durch Message Digests wird
auch verwendet, um die Komprimierung zu verbessern. Die Einzigartigkeit
einer Zahl wird verwendet, um sie zu komprimieren. Eine Prüfsumme ist
einzigartig oder relativ einzigartig mit Kollisionen. Eine einzigartige
Prüfsumme
würde eine
einzigartige Output-Zahl für
jeden Input erzeugen. Eine relativ einzigartige Prüfsumme würde Zahlen
erzeugen, die die gleichen für
verschiedene Inputs sind, oder sie würde Kollisionen zwischen Inputs minimieren.
-
In
einem Ausführungsbeispiel
ist das vorliegende System und Verfahren ausgelegt, um die Größe von Daten
auf einem Computer durch Komprimierung zu reduzieren. In einem anderen
Ausführungsbeispiel
ist das vorliegende System und Verfahren ausgelegt, um Hash, Message
Digest und die Prüfsummentechnologie
sowie deren Anwendung bei Informations- und Datenspeicherung zu
verbessern. In einem anderen Ausführungsbeispiel ist das vorliegende
System und Verfahren ausgelegt, um die Einzigartigkeit zu verbessern,
indem beiderseitige Ausschlüsse
in Hash- und in Prüfsummentests
verwendet werden. In einem anderen Ausführungsbeispiel ist das vorliegende
System und Verfahren ausgelegt, um Prüfsummentests zu verbessern,
so dass eine bessere Computersicherheit geschaffen wird. In einem
anderen Ausführungsbeispiel
ist das vorliegende System und Verfahren ausgelegt, um ein XML-Komprimierungsformat
zu erstellen und um die binären Komprimierungsformate
auf XML oder in eine andere Auszeichnungssprache zu verschieben.
In einem anderen Ausführungsbeispiel
ist das vorliegende System und Verfahren ausgelegt, um Hashes und
Message Digests mit variablen Längen
einzusetzen. In einem anderen Ausführungsbeispiel ist das vorliegende
System und Verfahren ausgelegt, um eine auf XML basierte Prüfsumme zu
erstellen, die zur Überprüfung der
Dateiintegrität
verwendet werden kann.
-
Zusätzlich zu
den hierin besprochenen verschiedenen Ausführungsbeispielen kann das vorliegende System
und Verfahren auch für
Verschlüsselungs-
und Überprüfungszwecke,
verbesserte Validierung und Prüfsummen
angepasst werden, um sicherzustellen, dass eine Datei unverändert oder
nicht modifiziert ist, um die Bandbreiten der Datenübertragungen
zu erhöhen
(z.B. ftp und Streaming-Medien)
und um andere Datenkomprimierungsverfahren (z.B. mpeg) zu ersetzen.
-
Weitere
Vorteile des vorliegenden Systems und des Verfahrens beinhalten
eine erhöhte
Komprimierungskapazität
mit offenen Formaten, verringerten Dateigrößen, Verwendung von Dokumenttyp-Definitionen (DTDs)
zur Validierung von komprimierten Dateien, Verwendung von XML oder
einer anderen Auszeichnungssprache, um komprimierte Dateien zu beschreiben
sowie die Verwendung von Prüfsummentests.
Solche Tests können
verwendet werden, um Zahlen oder Daten zu komprimieren und um die
Integrität
der Datei zu validieren. Prüfsummentests
können
auch verwendet werden, um die Integrität einer Datei durch eine Kombination von
digitalen Signaturen, Modulus oder Prüfsummen zu überprüfen. Sie können in Kombination auch verwendet
werden, um Dateien zu komprimieren, wenn die resultierende Prüfsumme weniger
als einen Byte-Block beträgt
und über
wenige oder keine Kollisionen verfügt. Wie beim Stand der Technik
bekannt ist, bedeutet die Überprüfung der
Dateiintegrität
die Sicherstellung, dass der Inhalt nicht verändert wurde. In einem Ausführungsbeispiel
bietet das vorliegende System und Verfahren auch vielfältige Möglichkeiten,
um die Dateiintegrität
zu verifizieren. Prüfsummen
können
Zahlen komprimieren und durch die Verwendung multipler Prüfsummen
kann die Dateisicherheit und Integrität mit stärkeren Überprüfungsätzen durchgeführt werden.
-
Die
Prüfsummenkomprimierung
wird verwendet, um die Datengröße zu reduzieren
und sie wird als eine Alternative zu Zip- und Archivkomprimierungsformaten
kommerzialisiert. Dies würde
verbesserte Streaming-Medien- sowie Audio- und Videodateien ermöglichen,
indem das Verhältnis
von Qualität
zu Bandbreite oder Größe erhöht wird.
Außerdem
gibt es viele Open-Source Message Digest-Programme, die deren Anwendung
erweitern. Die Prüfsummenkomprimierung
kann auch Speicherungskosten reduzieren und die Produktivität und Effizienz
verbessern.
-
In
einem Aspekt ist die vorliegende Erfindung auf ein System für die Speicherung
von Daten gerichtet, umfassend: einen oder mehrere Prozessoren,
betreibbar zur Erzeugung eines ersten Prüfsummenwerts für einen
Datenblock und eines zweiten Prüfsummenwerts
für den
Datenblock, wobei der erste Prüfsummenwert erzeugt
wird, indem ein erster Prüfsummenalgorithmus
auf den Datenblock angewendet wird und der zweite Prüfsummenwert
erzeugt wird, indem ein zweiter Prüfsummenalgorithmus, der sich
vom ersten Prüfsummenalgorithmus
unterscheidet, auf den Datenblock angewendet wird; einen oder mehrere
Prozessoren, betreibbar zur Erstellung eines Dateneintrags, der
Daten umfasst, die folgendes identifizieren: die ersten und zweiten
Prüfsummenwerte,
die ersten und zweiten Prüfsummenalgorithmen,
und mindestens eines der identifizierten Attribute des Datenblocks;
und einen oder mehrere Prozessoren, betreibbar zur Speicherung des Dateneintrags
in einem computerlesbaren Medium.
-
In
verschiedenen Ausführungsbeispielen
können
sich die einen oder mehreren zur Erzeugung, Erstellung und zur Speicherung
betreibbaren Prozessoren unterscheiden. Zum Beispiel ist ein Prozessor
betreibbar zur Erzeugung, Erstellung und Speicherung. Alternativ
dazu sind mehrere Prozessoren betreibbar zur Erzeugung, Erstellung
und/oder Speicherung.
-
In
einem Aspekt ist die Erfindung auf ein System für die Datenspeicherung gerichtet,
umfassend: einen oder mehrere Prozessoren, betreibbar zur Identifizierung
eines oder mehrerer Attribute eines ersten Datenblocks und eines
zweiten Datenblocks, wobei der zweite Datenblock den ersten Datenblock
umfasst und sich von diesem unterscheidet; einen oder mehrere Prozessoren,
betreibbar zur Erzeugung eines ersten Prüfsummenwerts für den ersten
Datenblock, wobei der erste Prüfsummenwert
erzeugt wird, indem ein erster Prüfsummenalgorithmus auf den
ersten Datenblock angewendet wird; einen oder mehrere Prozessoren,
betreibbar zur Erzeugung eines zweiten Prüfsummenwerts für den zweiten
Datenblock, wobei der zweite Prüfsummenwert erzeugt
wird, indem ein zweiter Prüfsummenalgorithmus
auf den zweiten Datenblock angewendet wird, einen oder mehrere Prozessoren,
betreibbar zur Erstellung eines Dateneintrags, der Daten umfasst,
die folgendes identifizieren: die ersten und zweiten Prüfsummenwerte,
und mindestens eines der identifizierten Attribute des ersten und
zweiten Datenblocks; und einen oder mehrere Prozessoren, betreibbar
zur Speicherung des Dateneintrags in einem computerlesbaren Medium.
-
In
verschiedenen Ausführungsbeispielen
können
sich die einen oder mehreren zur Identifikation, zur Erzeugung eines
ersten Prüfsummenwerts,
zur Erzeugung eines zweiten Prüfsummenwerts,
oder zur Speicherung betreibbaren Prozessoren unterscheiden. Zum
Beispiel ist ein Prozessor betreibbar zur Identifikation, zur Erzeugung
eines ersten Prüfsummenwerts,
zur Erzeugung eines zweiten Prüfsummenwerts,
zur Erstellung und zur Speicherung. Alternativ dazu sind mehrere
Prozessoren betreibbar zur Identifikation, zur Erzeugung eines ersten
Prüfsummenwerts,
zur Erzeugung eines zweiten Prüfsummenwerts,
zur Erstellung und/oder Speicherung.
-
In
einem Aspekt der vorliegenden Erfindung umfasst das System weiterhin
einen oder mehrere Prozessoren, betreibbar zur Bestimmung eines
Attributes eines Datenblocks, wobei dieses Attribut ein Name, Größe, Länge, Hash-Typ,
Prüfsummentyp,
Digest-Typ, Füllung,
Untergrenze, Obergrenze, Modulus, Kollision, Verzeichnis, Wurzel,
Laufwerk, Pfad, Datum, Zeit, Änderungsdatum,
Erlaubnis, Besitzer oder Byte-Anordnung sein kann; einen oder mehrere
Prozessoren, betreibbar zur Erstellung eines Dateneintrags, der
ein Attribut umfasst; einen oder mehrere Prozessoren, betreibbar
zur Speicherung des Dateneintrags in einem computerlesbaren Medium.
-
In
verschiedenen Ausführungsbeispielen
können
sich die einen oder mehreren zur Bestimmung, zur Erstellung, und
zur Speicherung betreibbaren Prozessoren unterscheiden. Zum Beispiel
ist ein Prozessor betreibbar zur Bestimmung, Erstellung und Speicherung.
Alternativ dazu sind mehrere Prozessoren betreibbar zur Bestimmung,
Erstellung und/oder Speicherung.
-
In
verschiedenen Aspekten der vorliegenden Erfindung ist der zweite
Prüfsummenalgorithmus
der erste Prüfsummenalgorithmus;
das Attribut kann ein Name, Größe, Länge, Hash-Typ,
Prüfsummentyp,
Digest-Typ, Füllung,
Untergrenze, Obergrenze, Modulus, Kollision, Verzeichnis, Wurzel,
Laufwerk, Pfad, Datum, Zeit, Änderungsdatum,
Erlaubnis, Besitzer oder Byte-Anordnung sein; der Dateneintrag ist
in einer Auszeichnungssprache geschrieben; die Auszeichnungssprache
ist entweder XML oder SGML; ein oder mehrere Prüfsummenwerte ist einer der
gehashten Werte, ein Digest und/oder eine Prüfsummenzahl; ein oder mehrere Prüfsummenwerte
werden erzeugt, indem mindestens einer der folgenden Algorithmen
verwendet wird: ein MD2 Algorithmus, ein MD4 Algorithmus, ein MD5
Algorithmus, ein SHA Algorithmus, ein zyklischer redundanter Prüfsummenalgorithmus,
ein Ripe-Algorithmus, ein CRC16 Prüfsummenalgorithmus, ein CRC32
Prüfsummenalgorithmus
und ein CRC64 Prüfsummenalgorithmus;
und mindestens zwei der einen oder mehreren Prozessoren arbeiten
parallel.
-
In
einem Aspekt ist die vorliegende Erfindung auf ein System für Datenwiedergewinnung
gerichtet, umfassend: einen oder mehrere Prozessoren, betreibbar
zum Empfang eines Dateneintrags, der Daten umfasst, die folgendes
identifizieren: erste und zweite Prüfsummenwerte, erste und zweite
Prüfsummenalgorithmen
und mindestens ein Attribut eines ersten Datenblocks; und basierend
auf dem Dateneintrag; einen oder mehrere Prozessoren, betreibbar
zur Identifikation des ersten Datenblocks durch: (a) Anwenden des
ersten Prüfsummenalgorithmus
auf jeden Block in einem ersten Satz von Datenblöcken zur Erzeugung eines ersten Satzes
von Prüfsummenwerten,
wobei jeder Wert in dem ersten Satz von Prüfsummenwerten einem oder mehreren
Datenblöcken
in dem ersten Satz von Datenblöcken
entspricht; (b) Vergleich des ersten Satzes von Prüfsummenwerten
mit dem ersten Prüfsummenwert,
(c) Identifikation eines oder mehrerer ersten Datenblock-Kandidaten als potentiell
dem ersten Datenblock entsprechend.
-
In
verschiedenen Ausführungsbeispielen
können
sich sich die einen oder mehreren zum Empfang und zur Identifikation
betreibbaren Prozessoren unterscheiden. Zum Beispiel ist ein Prozessor
betreibbar zum Empfangen und Identifizieren. Alternativ dazu sind
mehrere Prozessoren betreibbar zum Empfangen und/oder Speichern.
-
In
einem Aspekt der vorliegenden Erfindung umfasst das System außerdem einen
oder mehrere Prozessoren, betreibbar zur Identifikation von einen
oder mehreren ersten Datenblock-Kandidaten, die Werten im ersten
Satz von Prüfsummenwertes
entsprechen, die gleich dem ersten Prüfsummenwert sind.
-
In
einem Aspekt der vorliegenden Erfindung umfasst das System außerdem einen
oder mehrere Prozessoren, betreibbar zur Erzeugung eines zweiten
Satzes von Prüfsummenwerten,
indem der zweite Prüfsummenalgorithmus
auf die ersten Datenblock-Kandidaten angewendet wird; einen oder
mehrere Prozessoren, betreibbar zum Vergleichen des zweiten Satzes
von Prüfsummenwerten
mit dem zweiten Prüfsummenwert; einen
oder mehrere Prozessoren, betreibbar zur Identifikation eines zweiten
Datenblock-Kandidaten-Sets, das den Werten im zweiten Satz der Prüfsummenwerte
entspricht, der gleich dem zweiten Prüfsummenwert ist; und einen
oder mehrere Prozessoren, betreibbar zur Identifikation aller Datenblöcke im zweiten
Datenblock-Kandidaten-Set, als potentiell dem ersten Datenblock
entsprechend.
-
In
verschiedenen Ausführungsbeispielen
können
sich die einen oder mehrere Prozessoren , die betreibbar sind zur
Erzeugung, zum Vergleich, zur Identifikation eines zweiten Kandidaten-Block-Sets,
und zur Identifikation aller Datenblöcke, unterscheiden. Zum Beispiel
ist ein Prozessor betreibbar zur Erzeugung, zum Vergleich, zur Identifikation
eines zweiten Kandidaten-Block-Sets und zur Identifikation aller
Datenblöcke.
Alternativ dazu sind mehrere Prozessoren betreibbar zur Erzeugung,
zum Vergleich, zur Identifikation eines zweiten Kandidaten-Block-Sets
und/oder zur Identifikation aller Datenblöcke.
-
In
verschiedenen Aspekten der vorliegenden Erfindung wird der erste
Prüfsummenalgorithmus
auf die ausgewählten
Datenblöcke
im ersten Satz von Datenblöcken
durch mindestens einen linearen Scan oder nicht-linearen Scan angewendet;
der nicht-lineare Scan umfasst einen Skipping-Scan, einen Modulus-Scan oder einen
exponentiellen Scan; jedem Datenblock-Kandidat wurde eine einzigartige
Kollisionsnummer zugewiesen; und mindestens ein oder mehrere Prozessoren
umfassen eine ganzzahlige Berechnungseinheit und ein oder mehrere
Hash-Register.
-
In
einem Aspekt ist die vorliegende Erfindung auf ein System zur Datenspeicherung
gerichtet, umfassend: computerimplementierte Mittel zur Erzeugung
eines ersten Prüfsummenwerts
für einen
ersten Datenblock und eines zweiten Prüfsummenwerts für den ersten
Datenblock; computerimplementierte Mittel zur Erstellung eines Dateneintrags,
der die ersten und zweiten Prüfsummenwerte umfasst;
und computerimplementierte Mittel zur Speicherung des Dateneintrags
in einem computerlesbaren Medium.
-
In
verschiedenen Ausführungsbeispielen
können
sich die Mittel zur Erzeugung, zur Erstellung und zur Aufbewahrung
unterscheiden. Zum Beispiel kann ein Mittel erzeugen, erstellen
und speichern. Alternativ können
mehrere Mittel erzeugen, erstellen und/oder speichern.
-
In
einem Aspekt ist die vorliegende Erfindung auf ein System zur Datenspeicherung
gerichtet, umfassend: computerimplementierte Mittel zur Identifikation
eines oder mehrerer Attribute eines Datenblocks; computerimplementierte
Mittel zur Erzeugung eines ersten Prüfsummenwerts für den Datenblock
und eines zweiten Prüfsummenwerts
für den
Datenblock, wobei der erste Prüfsummenwert
erzeugt wird, indem ein erster Prüfsummenalgorithmus auf den
Datenblock angewendet wird, und der zweite Prüfsummenwert erzeugt wird, indem
ein zweiter Prüfsummenalgorithmus,
der sich vom ersten Prüfsummenalgorithmus
unterscheidet, auf den Datenblock angewendet wird; computerimplementierte
Mittel zur Erstellung eines Dateneintrags, der Daten umfasst, die
folgendes identifizieren: die ersten und zweiten Prüfsummenwerte,
die ersten und zweiten Prüfsummenalgorithmen,
und mindestens eines der identifizierten Attribute des Datenblocks;
und computerimplementierte Mittel zur Speicherung des Dateneintrags
in einem computerlesbaren Medium.
-
In
verschiedenen Ausführungsbeispielen
können
sich die Mittel zur Identifizierung, Erzeugung, Erstellung und Aufbewahrung
unterscheiden. Zum Beispiel kann ein Mittel identifizieren, erzeugen,
erstellen und speichern. Alternativ können mehrere Mittel identifizieren,
erzeugen, erstellen und/oder speichern.
-
In
einem Aspekt ist die vorliegende Erfindung auf ein System zur Datenwiedergewinnung
gerichtet, umfassend: computerimplementierte Mittel zur Identifikation
eines oder mehrerer Attribute eines ersten Datenblocks und eines
zweiten Datenblocks, wobei der zweite Datenblock den ersten Datenblock
umfasst und sich von diesem unterscheidet; computerimplementierte
Mittel zur Erzeugung eines ersten Prüfsummenwerts für den ersten
Datenblock, wobei der erste Prüfsummenwert
erzeugt wird, indem ein erster Prüfsummenalgorithmus auf den
ersten Datenblock angewendet wird; computerimplementierte Mittel
zur Erzeugung eines zweiten Prüfsummenwerts
für den
zweiten Datenblock, wobei der zweite Prüfsummenwert erzeugt wird, indem
ein zweiter Prüfsummenalgorithmus
auf den zweiten Datenblock angewendet wird; computerimplementierte
Mittel zur Erzeugung eines Dateneintrags, der Daten umfasst, die
folgendes identifizieren: die ersten und zweiten Prüfsummenwerte
und mindestens eines der identifizierten Attribute der ersten und
zweiten Datenblöcke;
und computerimplementierte Mittel zur Speicherung des Dateneintrags
in einem computerlesbaren Medium.
-
In
verschiedenen Ausführungsbeispielen
können
sich die Mittel zur Identifizierung, Erzeugung eines ersten Prüfsummenwerts,
Erstellung eines zweiten Prüfsummenwerts,
Erstellung und Aufbewahrung unterscheiden. Zum Beispiel kann ein
Mittel identifizieren, einen ersten Prüfsummenwert erzeugen, einen
zweiten Prüfsummenwert
erzeugen, erstellen und speichern. Alternativ dazu können mehrere
Mittel identifizieren, einen ersten Prüfsummenwert erzeugen, einen
zweiten Prüfsummenwert
erzeugen, erstellen und speichern.
-
ABBILDUNGEN
-
1 ist
ein Flussdiagramm, das die Komprimierungsschritte der vorliegenden
Systeme und Verfahren darstellt;
-
2 ist
ein Flussdiagramm, das die Validierungsschritte der vorliegenden
Systeme und Verfahren darstellt;
-
3 ist
ein Flussdiagramm, das die Operation des Flusses in 2 weiter
darstellt; und
-
4 ist
ein Blockdiagramm, das einen parallelen Message Digest-Prozessor
darstellt.
-
DETAILLIERTE
BESCHREIBUNG
-
Eine
Prüfsumme
ist eine berechnete Darstellung einer anderen Zahl. Es gibt viele
Arten von Prüfsummen,
einschließlich
und ohne Begrenzung auf Message Digests, Hashes, digitale Signaturen,
zyklische Redundanz-Prüfsummen
("CRC") und numerische
Prüfungen.
Eine Prüfsumme
umfasst eine Gruppe von Hashes, Signaturen, Digests oder andere
Tests, die eine einzigartige oder relativ einzigartige Zahl per
Fingerabdruck überprüfen können. Auf
diese Weise ist eine Prüfsumme
leistungsfähiger,
als ein Hash, Signatur usw. allein ist.
-
In
einem Ausführungsbeispiel
wird ein Prüfsummentest
(Validierung) auf einer ausgewählten
Zahl ausgeführt,
um zu überprüfen, ob
die Zahl einer Prüfsumme
mit der Prüfsumme
der Originalzahl identisch ist. Wie erkennbar ist, kann eine Zahl
eine Teilmenge einer größeren Zahl
sein, wobei die Prüfsumme
gegen eine Teilmenge der Originalzahl validiert wird. Außerdem können Teilmengen
kombiniert werden, um zusätzliche
Prüfsummen
zu formen, damit wird ein weiterer Grad der Validierung der zugrunde
liegenden Zahl hinzugefügt. Zum
Beispiel kann eine größere Zahl
in 16 gleiche Teile mit je einer Prüfsumme geteilt werden. Außerdem verfügt jedes
benachbartes Zahlenpaar (8 Paare) über seine eigene Prüfsumme,
und jede Hälfte
des Hauptsets verfügt
auch über
eine eigene Prüfsumme.
-
Eine
Prüfsumme
wird erstellt, um ein beliebiges Datenelement oder eine Kombination
von Datenelementen darzustellen. Zum Beispiel können Prüfsummen erstellt werden, die
den Inhalt einer Datei oder den Namen einer Datei darstellen. Außerdem kann
eine Prüfsumme
für den
Dateinamen, seinen Inhalt und eine digitale Signatur für die Datei
erstellt werden. Wie erkennbar ist, basiert eine Prüfsumme auf
einer beliebigen Datendarstellung, einschließlich und ohne Begrenzung auf
den Dateinamen, Dateigröße, Dateilänge, einen Datei-Hash
oder Digest usw. Zur Erleichterung des Verständnisses umfassen die Begriffe
Daten, Datenelement und Datenblock beliebige Datenkombinationen,
einschließlich
nur als Beispiel, einzelne Datenelemente, kombinierte Datenelemente,
einzelne oder kombinierte Dateien, Dateinamen, Deskriptoren, Metadaten,
Datenblöcke
usw.
-
Eine
digitale Datei stellt eine Serie von Zahlen dar. In einem bevorzugten
Ausführungsbeispiel
können Daten
in der Form einer digitalen Datei komprimiert werden, indem eine
Prüfsumme
verwendet wird. In einem anderen Ausführungsbeispiel wird ein Message
Digest, Hash oder digitale Signatur in Verbindung mit der Prüfsumme eingesetzt.
Wie erkennbar ist, werden die vorliegenden Systeme und Verfahren
auf beliebige Dateitypen, einschließlich auf binäre Dateien,
angewendet. Außerdem
könnte
ein binäres
Format verwendet werden, um eine komprimierte Datei zu beschreiben
als auch zu verschlüsseln.
Wie außerdem
erkennbar ist, wird eine erhöhte
Verarbeitungsleistung eine bessere Komprimierung und ein gründlicheres
Testen bieten.
-
KOMPRIMIERUNG
-
Ein
Ausführungsbeispiel
der Datenkomprimierung wird in Verbindung mit 1 gezeigt.
In diesem Ausführungsbeispiel
werden die Daten komprimiert, indem ein Komprimierungsprogramm auf
den Daten ausgeführt
wird. Details zur Komprimierung werden in Verbindung mit 1 dargestellt.
Wie in 1 gezeigt, wird in Schritt 102 eine
Datendatei die entstandenen komprimierten Dateidaten enthalten.
Dieser Schritt beinhaltet auch die Bestimmung der Dateiattribute,
wie Dateigröße, Länge, Name,
Blockgröße, Anzahl
der Blöcke, zu
verwendende Komprimierungsverfahren usw.
-
In
Schritt 104 werden die Dateien mit den gewünschten
Komprimierungsverfahren komprimiert. Daten können zum Beispiel komprimiert
werden, indem das SHA Digest, MD5 Digest, CRC oder ein beliebiger
anderer Digest, digitale Signatur, Prüfsumme oder Hashing-Verfahren
erzeugt wird. Andere digitale und Prüfsummen können, nur als nicht einschränkendes
Beispiel, MD2, MD4, MD5, Ripe, SHA-Familie, CRC16 CRC32 und CRC64
beinhalten. Daten können
auch durch ein Modulus, Modulus-Rest und Modulus-Exponent, wie unten beschrieben,
komprimiert werden. In einem Ausführungsbeispiel ist die Komprimierung
umkehrbar. In einem anderen Ausführungsbeispiel
ist die Komprimierung nicht umkehrbar. Das Anbieten einer Kombination
von Signaturen und Prüfsummen
und Modulusen ermöglicht
der Signatur, umkehrbar zu sein.
-
In
einem Ausführungsbeispiel
können
die Daten vor der Komprimierung in Blöcke verschiedener Größe aufgeteilt
sein. Wie erkennbar ist, wenn Hashings mit fester Länge, Digests
oder Prüfsummen
verwendet werden, ist das Komprimierungsverhältnis besser, je länger die
Blöcke
sind. Es ist auch erkennbar, dass Kollisionen auftreten können und
entsprechend ein Kollisionszähler
implementiert werden kann. Solche Zähler werden detailliert im
Weiteren beschrieben. Das Ergebnis der Komprimierungsverfahren wird
hierin als der Prüfsummenwert
benannt.
-
In
Schritt 106 werden Daten zu einer Datendatei geschrieben
oder in einem temporären
oder permanenten Computerspeicher aufbewahrt (d.h. volatiler oder
nicht volatiler Speicher). Solche Daten beinhalten die komprimierten
Daten in Schritt 104. In einem Ausführungsbeispiel beinhaltet die
Datendatei auch alle die zugehörigen
Details der Daten. Solche Details können beinhalten, einschließlich nur
als Beispiel, den Dateinamen, die Originaldateigröße, Blockkategorien,
Blockidentifikatoren, Blockeinträge,
Füllungen,
die für
einen beliebigen Block verwendet wurden, Prüfsummenzahlen usw. Jede Blockkategorie
wird durch einen einzigartigen Blockidentifikator identifiziert.
Außerdem
wird jede Blockkategorie einen oder mehrere Blockeinträge, Fülleinträge, Blockgrößeneinträge, Blocklängeneinträge usw.
beinhalten. Jeder Blockeintrag beinhaltet gewöhnlich einen Hash, Digest,
Prüfsumme,
Umkehr-Hash oder einen anderen Eintrag, der vom Prüfsummengenerator erstellt
wurde. Wie detailliert unten beschrieben, werden solche Einträge beim
Validieren der Daten verwendet, d.h. der Prüfsummenwert des Blockeintrags
wird mit einem anderen Prüfsummenwert
einer Zahl verglichen. In einem Ausführungsbeispiel können mehrere
Blockeinträge
für die
gleichen Daten (unter Verwendung unterschiedlicher Komprimierungsverfahren)
für den
beiderseitigen Ausschluss verwendet werden.
-
Wie
erkennbar und wie unten detailliert beschrieben ist, können die
Datendateien in XML, SGML oder in einer anderen Auszeichnungssprache
geschrieben sein. Wenn zum Beispiel SHA verwendet wird, um einen Datenblock
zu komprimieren, beinhaltet ein XML-Eintrag den Prüfsummenwert,
der durch SHA-Identifikatoren abgegrenzt wird, z.B. "<SHA> checksum
value </SHA>". Ein Beispiel einer solchen Datei in
Auszeichnungssprache ist unten aufgeführt.
-
Wenn
keine anderen Daten zu komprimieren sind, wird die Datei gespeichert
und die Komprimierung ist abgeschlossen (Schritt 108),
falls nicht, geht es mit Schritt 104 weiter.
-
Ein
Ausführungsbeispiel
des vorliegenden Systems und Verfahrens umfasst die Komprimierung
einer auf einer Auszeichnungssprache basierten Prüfsumme mit
Attributen als Alternative zu binären Komprimierungsformaten.
Die Markup-Tags
können
von unterschiedlicher Länge
sein und können
gekürzt
werden, d.h. die Tags können
nummeriert werden, um die Länge
zu verringern (z.B. "<1 > </1 > <2> </2>") . Wie erkennbar ist,
ist die Verwendung von Markup-Tags klarer als ein binäres Komprimierungsformat.
Die Datei kann auch offen konvertiert werden.
-
Wie
durch den Fachmann erkennbar ist, bedeutet offene Konvertierung,
dass es ein offenes Format für
XML oder eine Nicht-XML Text-Markup-Sprachdefinition für Dateisignaturen
gibt. Außerdem
gibt es ein Computerprogramm und ein Dienstprogramm (wie das Perl-Programm,
beinhaltet in der Anlage A) zum Erzeugen der Dateisignaturen, entsprechend
einer vordefinierten Sprache und deren Überprüfung mit den Dokumenttyp-Definitionen
(DTDs), wenn es sich bei der Signaturdatei um XML, SGML, Backus-Naur
oder um eine andere Sprache handelt. Des weiteren verfügt ein Datei-Dienstprogramm über optionale
Nachweise, die die Befehlsoptionen eines Dateisignatur-Outputs ausschließen oder
modifizieren. Es kann auch bedeuten, dass das XML-Format für einen
beliebigen Text-Markup ermöglicht,
dass Prüfsummengruppen
zusammen angewendet werden können
und dass Prüfsummenoperationen
spezifisch in der DTD oder Sprachdefinition definiert werden müssen. Ein
Textformat ist offen beschrieben, einsehbar, vereinbart, erweiterbar
und überprüfbar. Außerdem können Prüfsummenoperationen
in einem offenen konsistenten Format definiert und vereinbart werden.
Ein binäres
Format ist weniger offen, da es sich um ein Nicht-Textformat handelt,
das durch herkömmliche
Texteditoren nicht immer lesbar ist. Ein binäres Dateisignaturformat, das
offen definiert ist, kann auch für Signaturen
verwendet werden, ist aber weniger offen und führt dazu, dass Daten nicht
in einer binären
Schutzkomprimierung verschlossen sind. Außerdem bietet dies ein Mittel
zur Verwendung des Prinzips des beiderseitigen Ausschlusses, wobei
SHA und MD5 (andere beliebige Zahl des Hashing-Algorithmus) zur
beiderseitigen Überprüfung verwendet
werden kann.
-
Wie
oben besprochen, können
Daten komprimiert werden, indem ein beliebiger Mechanismus verwendet
wird, z.B. Hashing-Mechanismus.
In einem Ausführungsbeispiel
wird Daten in eine beliebige Blockanzahl geteilt und jeder Block
kann gehasht werden. Zum Beispiel können Daten mit der Größe von 1000
Bytes in vier 250 Byte-Blocks dividiert werden, wobei jeder Block
gehasht werden kann. Wie erkennbar ist, können Daten in Blockserien dividiert
werden, die n Bytes lang sind und über eine Füllung verfügen oder nicht. Zum Beispiel können vor
der Komprimierung Daten mit der Größe von 992 Bytes in vier 250
Byte-Blocks geteilt werden, wobei jeder mit 2 Füll-Bytes aufgefüllt wird.
-
In
einem Ausführungsbeispiel
wird jeder Block gehasht, indem mehr als ein Hashing-Mechanismus verwendet
wird. Außerdem
können
ein oder mehrere Blöcke
unabhängig
voneinander gehasht werden, um zwei Prüfsummenwerte zu erstellen,
als auch zusammen gehasht werden, um einen zusammengesetzten (dritten)
Prüfsummenwert
zu erstellen. In einem Ausführungsbeispiel
können
diese multiplen Prüfsummenwerte
für den
beiderseitigen Ausschluss, wie unten detailliert beschrieben, verwendet
werden. Kurzgefasst bieten die beiderseitigen Ausschlüsse jedoch
einen Mechanismus zur Erhöhung
der Wahrscheinlichkeit, dass die validierte Zahl die korrekte Zahl
ist. Wo zum Beispiel ein erster Block validiert wird (z.B. durch
die Suche einer Zahlensequenz, die den gleichen MD5 oder SHA Hash
haben), kann ein zusätzlicher
Digest, Hash-Wert oder Prüfsumme
validiert werden um sicherzustellen, dass die Zahlensequenz die
korrekte Sequenz ist. Mit dem beiderseitigen Ausschluss besteht
eine verminderte Chance auf mehr als eine Kollision, d.h., es ist
statistisch unwahrscheinlich, dass multiple Hashes für die gleiche
Zahlensequenz zu Kollisionen führen
werden. Wie erkennbar ist, können
beliebige Zahlen des Digests, Hash-Werte oder Prüfsummen verwendet werden, um
die Zuverlässigkeit
weiter zu erhöhen.
In einem Ausführungsbeispiel
wird eine Zahl auch durch eine Prüfsumme umgedreht verarbeitet
oder durch eine Prüfsumme
mit variabler Länge
geführt,
die einen Schlüssel
mit variabler Länge
von 30 bis 50 Bytes erzeugt. Wie erkennbar ist, sind SHA und MD5
Hash-Algorithmen mit fester Byte-Länge, wobei SHA einen längeren Signaturschlüssel haben
würde als
MD5.
-
Ein
Beispiel einer Komprimierungs-Markup-Datei finden Sie unten:
-
Als
ein weiteres Beispiel stelle man sich vor, dass eine Datei mit dem
Namen "file" als "file.archive" komprimiert wird.
Die Größe von "file" wird mit 120.233
Bytes festgelegt. Es kann gewünscht
werden, dass die Daten in Blöcke
geteilt werden sollen. Wenn eine Blockgröße mit 20000 Bytes definiert
sein würde,
könnte "file" in 7 Blöcke geteilt
werden, wobei der letzte Block nur 233 Bytes hat. Jeder Block kann
durch einen Prüfsummengenerator
geführt
werden, und für
jedes Komprimierungsverfahren, das auf dem Block verwendet wird, wird
ein Prüfsummen-Blockeintrag
geschrieben. Wenn zum Beispiel die Blocknummer 2 mit SHA und MD5 komprimiert
wird, würde
ein Blockeintrag für
beide in der Blockkategorie für
Blocknummer 2 beinhaltet werden. Andere Einträge können in dieser Blockkategorie
aufgelistet werden, wie die Referenzblocknummer (hier "2"), Blockgröße (hier 2000 Bytes), Blocklänge, Füllung usw.
Alle Blöcke
können
unter "file.archive" gespeichert werden,
die eine Dateigröße von nur
2.156 Bytes hat. Ein Beispiel der Datei "file.archive" finden Sie unten.
-
-
REKONSTRUKTION
-
In
einem bevorzugten Ausführungsbeispiel
werden die archivierten Daten durch die Ausführung eines Rekonstruktionsprogramms
auf den archivierten Daten rekonstruiert. Details der Validierung
werden in Verbindung mit 2 dargestellt.
-
In
Schritt 202 wird eine komprimierte Datei geöffnet. Dies
kann eine Archivdatei sein oder, wie oben beschrieben, eine XML-,
SGML- oder eine andere Datei mit komprimierten Dateideskriptoren.
Dateideskriptoren können
den Dateinamen, die Originaldateigröße, Blockkategorien, Blockgrößen, Blockidentifikatoren, Blockeinträge, Füllung, die
für einen
beliebigen Block verwendet wurde, Prüfsummenzahlen, Blockidentifikatoren,
ein oder mehrere Blockeinträge,
Fülleinträge, Blockgrößeneinträge, Blocklängeneinträge usw.
beinhalten. Jeder Blockeintrag beinhaltet einen oder mehrere Hashs,
Digests, Prüfsummen,
Umkehr-Hashs oder andere Einträge,
wie durch den Prüfsummengenerator
erstellt. Außerdem
beinhaltet der Dateideskriptor Dateimetadaten oder Dateiattribute.
Nur als nicht einschränkendes
Beispiel, Datenattribute können
mindestens die Größe, Länge, Dateiname,
Verzeichnis, Wurzel, Laufwerk, Pfad, Datum, Zeit, Änderungsdatum,
Erlaubnis, Besitzer, Byte-Anordnung und Typ oder andere Eigenschaften
und Metadaten sein. Jedes dieser Dateiattribute ist in der Archivsignatur
für diese
Datei beinhaltet.
-
Im
Schritt 204 wird ein Scan auf einem Zahlenspektrum ausgeführt. Der
Scanprozess ist ein Verfahren zum Auffinden einer Zahl, die einen
Prüfsummenwert
erzeugt, der mit einer bekannten Prüfsumme übereinstimmt, insbesondere
die Untersuchung jeder Zahl in einem Zahlenspektrum, um einen Datenblock
zu finden, der zum gleichen Prüfsummenwert
führt,
wie ein bestimmter Blockeintrag. In verschiedenen Ausführungsbeispielen
können
verschiedene Scanverfahren verwendet werden, einschließlich, nur
als nicht einschränkendes Beispiel,
lineare Scans, nicht-lineare Scans, Skipping-Scans, exponentielle
Scans, restriktive Scans, Modulus-Scans usw. Wie erkennbar ist,
können
verschiedene Scanverfahren die Scanzeit verbessern, indem das Zahlenset
im Scanbereich reduziert wird. Wie weiterhin erkennbar ist, werden
Nicht-Scanverfahren auch in Verbindung mit dem Scannen verwendet,
um den Scanprozess zu vereinfachen. Zum Beispiel wird die Bestimmung,
ob die Zahl eine Prim-, zusammengesetzte, gerade oder ungerade Zahl
ist, als ein Schritt im Validierungsprozess verwendet. Verschiedene
Scanverfahren werden im Weiteren detailliert besprochen.
-
In
einem Ausführungsbeispiel
wird jede Zahl im Scanspektrum gegen eine bekannte Prüfsumme überprüft. In einem
anderen Ausführungsbeispiel
wird jede Zahl im Scanbereich gegen eine bekannte Prüfsumme überprüft und wo
die Überprüfung erfolgreich
ist, wird die Zahl gegen eine oder weitere folgenden Prüfsummen überprüft (wie
in Verbindung mit der beiderseitigen Ausschließung beschrieben). In einem
anderen Ausführungsbeispiel
wird jede Zahl im Scanspektrum gegen alle bekannten Prüfsummen überprüft.
-
In
verschiedenen Ausführungsbeispielen
können
während
des Scannens nicht-lineare oder Skipping-Scans verwendet werden.
Nicht-lineare oder Skipping-Scans sind Scans, die aus einer sequentiellen
Anordnung bestehen können
oder Zahlen überspringen,
z.B. würden
Skipping- oder nicht-lineare
Scans jede ungerade Zahl, jede gerade Zahl, jede 5. Zahl überspringen
oder nach dem Zufallssystem scannen. Weitere Ausführungsbeispiele
beinhalten andere Scanverfahren, einschließlich einen Permutationsscan
(d.h. eine Prüfsumme
kann gegen eine Serie an Permutationen geführt werden), einen Parallelscan
(d.h. ein Prüfsummenscan,
der das gescannte Spektrum in multiple Computer, Mikroprozessoren,
Prozesse usw. aufteilen kann), einen Restriktionsscan (d.h. ein
Scan der gegen eine Zahlensequenz durchgeführt werden kann, z.B. von 0
bis N oder von M bis N). Mit einem Restriktionsscan wird eine Untergrenze
oder Obergrenze so definiert, dass der Scan nur bei den Ziffern
zwischen der Unter- und der Obergrenze durchgeführt wird. Diese und andere
Ausführungsbeispiele
für das
Scannen werden im Weiteren detailliert besprochen.
-
Zum
Beispiel verfügt
ein Input O (Input) über
einen Prüfsummen-Output
von N. Damit eine Zahl M (hashed) gleich dem O (Input) ist, muss
der Prüfsummen-Output
(N2) gleich sein. Deshalb ist N = N2 für O = M. Dieser Aspekt des
Scannens kann in der folgenden Formel ausgedrückt werden:
O(Input) =
Prüfsummen-Output
(N)
M (hashed) = Prüfsummen-Output
(N2)
-
In
einem Ausführungsbeispiel
wird ein linearer Scan verwendet. Dies ist der elementarste Scan,
wo ein Zahlenbereich, z.B. von 1 bis n, inkrementell gescannt wird.
Umkehrscans, von n bis 1, können
auch verwendet werden. Andere Scanverfahren werden unten beschrieben.
-
In
einem bevorzugten Ausführungsbeispiel
wird eine Prüfsumme
verwendet, um eine Zahl zu finden, die zur digitalen Signatur, Message
Digest, Prüfsumme,
Hash usw. einer bekannten Zahl zugehörig ist. Es können beliebige
Scanverfahren durchgeführt
werden, um die Prüfsumme
zu validieren. Zum Beispiel wird eine Zahl in einem linearen Scan
inkrementiert und getestet um zu sehen, ob sie mit der bekannten
Prüfsumme übereinstimmt.
Wenn sie nicht übereinstimmt,
wird die Zahl wiederum inkrementiert und getestet. Diese Schritte
werden wiederholt, bis die Prüfsumme
entweder gefunden oder eine maximale Zahl erreicht wurde. Wie erkennbar
ist, können
andere Scanverfahren, wie oben oder unten erwähnt, eingesetzt werden, um
Prüfsummen zu
validieren.
-
In
einem Ausführungsbeispiel
wird ein Parallelscan verwendet. Es folgt ein Veranschaulichungsbeispiel
eines Parallelscans. Es besteht ein Scanbereich von 0 bis 10029000.
Der Scanbereich ist zwischen 2 oder mehrere Prozessoren geteilt
und jedem Prozessor ist ein entsprechender Teil des Bereichs zugewiesen. Hier
werden ¼ des
Bereichs 4 Prozessoren zugeordnet. 10029000 wird in 4 Bereiche geteilt
und jedes CPU führt
die Überprüfungen aus
um zu bestimmen, ob eine Zahl die gleichen Prüfsummen ausgibt. Wenn die Zahl eine
identische Prüfsumme
erzeugt, endet die Computerverarbeitung. Beachten Sie, dass eine
zusätzliche Verarbeitung
stattfinden kann, wo ein beiderseitiger Ausschluss beinhaltet ist.
Beiderseitiger Ausschluss wird im Weiteren detaillierter beschrieben.
Wenn zum Beispiel die Zahl 12333 den korrekten MD5 Hash erzeugt, dann
wurde die Zahl potentiell gefunden. Die beiderseitige Ausschluss-Überprüfung bietet
die Zusicherung, dass die Zahl korrekt ist, z.B. wo die Zahl auch
das korrekte CRC und SHA erzeugt, besteht eine größere Möglichkeit,
dass die Zahl korrekt ist. Ein Paar der digitalen Signaturen kann
auch erstellt werden, die Kollisionen haben können, aber erstellt wurden,
um unterschiedliche Signaturergebnisse zu produzieren, wenn sie
zusammen verwendet werden. Dies ist ein Beispiel einer beiderseitigen
Ausschließung.
Zum Beispiel wird die digitale Signatur xyz erstellt, um eine andere
Signatur zu erstellen als die digitale Signatur zzz.
-
Das
Folgende stellt einen Parallelscan dar.
-
-
In
einem Ausführungsbeispiel
wird es Kollisionen außerhalb eines
bestimmten Zahlenspektrums geben, und entsprechend könnte ein
Scan durch einen definierten Bereich iterieren, um eine Zahl X zu
finden, die zu einer Prüfsumme
Y zugehörig
ist. Dies wird oft ein Restriktionsscan genannt. Ein Restriktionsscan
wird einen Startpunkt als auch einen Endpunkt für einen Scan definieren, z.B.
von 12 bis 123. Ein weiteres Beispiel eines Restriktionsscans wird
ein Collar sein, sodass die Zahl N zur x. Leistung als Startpunkt
mit einer Zahl M zur y. Leistung als Endpunkt agiert.
-
In
einem anderen Ausführungsbeispiel
wird ein Skipping-Scan verwendet, um die Anzahl der Iterationen
in einem Scan zu reduzieren. Solch ein Skipping-Scan wird während des
Scanprozesses Zahlen überspringen.
Zum Beispiel wird der Scan ungerade oder selbst gerade Zahlen überspringen,
jede n. Nummer oder ein definiertes Überspringset und Prüfsummen
an den relevanten Zahlen ausführen.
-
In
einem anderen Ausführungsbeispiel
wird ein Modulus-Scan verwendet. Ein Modulus-Scan wird im Weiteren
detailliert beschrieben.
-
In
einem anderen Ausführungsbeispiel,
wie oben beschrieben, wird der beiderseitige Ausschluss verwendet,
um die Geschwindigkeit der Validierung zu erhöhen und um die Einzigartigkeit
der Daten sicherzustellen. Wie erkennbar ist, ähneln Message Digest, Hashes
und digitale Signaturen den Prüfsummen
darin, dass sie ein alternatives Verfahren bieten, um ein bekanntes
Datenelement darzustellen. Im vorliegenden System und Verfahren
können
multiple Prüfsummen,
Signaturen, Hashes, Digests usw. zur Validierung einer bekannten
Prüfsumme
verwendet werden, basierend auf dem Prinzip des beiderseitigen Ausschlusses.
In einem Ausführungsbeispiel
ist der beiderseitige Ausschluss das Ergebnis der Paarung von zwei
oder mehreren Signaturen oder Prüfsummen,
sodass die Signaturen und die Signaturergebnisse andere Signaturen
und Signaturergebnisse gegen Kollisionen validieren. Es kann für eine digitale
Signatur oder Hash oder Prüfsumme
eine Kollision geben, aber zwei Prüfsummen können unterschiedliche Ergebnisse
produzieren und damit die Wahrscheinlichkeit erhöhen, dass die korrekte Zahl
gefunden wurde. Digitale Signaturen können auch erstellt werden,
die unterschiedliche Ergebnisse für unterschiedliche Inputs produzieren
und Kollisionen vermindern.
-
Wenn
mehr als eine mathematische Darstellung eines bekannten Datenelements,
Datei, Block usw. angeboten wird, stellt der beiderseitige Ausschluss
sicher, dass eine höhere
statistische Wahrscheinlichkeit der Einzigartigkeit besteht, wenn
die Daten durch Scannen validiert werden. Wenn eine Kollision für einen Message
Digest auftritt, ist es unwahrscheinlich, dass dies auch die Kollision
für einen
zweiten Digest ist. Außerdem
können
die zwei Digests verwendet werden, um einen unterschiedlichen und
deutlichen Key für
einen vorgegebenen Input zu erzeugen. Wie erkennbar ist, basierend
auf dem Prinzip des beiderseitigen Ausschlusses, können 2 oder
mehrere Prüfsummen,
die auf dem Prinzip des beiderseitigen Ausschlusses basieren und unterschiedliche
Prüfsummenverfahren
verwenden, benutzt werden um zu überprüfen, dass
eine Prüfsummenzahl
gegen eine Originalzahl validiert wird. Mit 3, 4 oder mehr Prüfsummen,
die jede ein anderes Prüfsummenverfahren
verwenden, ist es sogar noch unwahrscheinlicher, dass Kollisionen
in allen Digests auftreten.
-
Zum
Beispiel erzeugen die folgenden Inputs den gleichen MD5 Hash:
-
Sie
erzeugen beide diesen md5 Digest: 79054025255fb1a26e4bc422aef54eb4.
-
Wenn
entsprechend mehr als eine mathematische Darstellung eines bekannten
Datenelements, Datei, Block usw. angeboten wird, stellt der beiderseitige
Ausschluss sicher, dass eine höhere
statistische Wahrscheinlichkeit der Einzigartigkeit besteht, wenn
die Daten durch Scannen validiert werden. Unten ist ein Beispiel
eines Digests aufgeführt,
das in einer XML-Markup-Datei beinhaltet ist, wobei unterschiedliche
Digests für
die oben genannten Inputs erstellt wurden, womit das Konzept des
beiderseitigen Ausschlusses dargestellt wird:
-
In
einem Ausführungsbeispiel überprüft der beiderseitige
Ausschluss zuerst den am wenigsten prozessorintensiven Hash, Digest
oder Prüfsumme,
der/die zu einem bestimmten Datenelement gehört. Auf diese Weise muss der
Prozessor nicht intensive Hashs, Digests oder Prüfsummen für jede Zahl im Scanbereich
berechnen. Die Anzahl der prozessorintensiven Schritte kann entsprechend
reduziert werden. Außerdem
können durch
die Einbeziehung eines Kollisionszählers (wird detailliert im
Weiteren besprochen) Folgekollisionen eine einzigartige Kollisionszahl
integrieren, um die Validierung einzigartig zu identifizieren. Folgetests
zum beiderseitigen Ausschluss werden nur an der übereinstimmenden Zahl ausgeführt. Eine
Kostenpyramide kann auch für
Signatur-Digests oder Prüfsummen
mit höheren
Kosten erhalten werden, die zuletzt verarbeitet und getestet werden
(nur wenn eine vorherige Prüfsumme
oder Test erfolgreich ist), und die Digests mit niedrigen Kosten werden
zuerst verarbeitet. Wenn es drei Digests gibt, können nur die letzten 2 überprüft werden,
wenn der Test für
die vorhergehende oder frühere
Prüfsumme
oder digitale Signatur erfolgreich ist.
-
Im
Schritt 206, wo eine Prüfsummenübereinstimmung
gefunden wurde, wird die Zahl, die zur Übereinstimmung mit der Prüfsumme führt, in
eine Output-Datei geschrieben. Wenn die gefundene Prüfsumme die erste Übereinstimmung
ist, kann die Prüfsummendatei
erstellt werden. In einem Ausführungsbeispiel
bestimmt ein Blockidentifizierer die Position der gefundenen Zahl
in der Output-Datei. Zum Beispiel würde eine Zahl entsprechend
dem Identifizierer für
Block 1 in der ersten Position der Output-Datei platziert werden
und eine Zahl entsprechend dem Identifizierer für Block 2 würde am Ende des Blocks 1 angehängt, würde aber
vor der Zahl in Block 3 erscheinen. Auf diese Weise können mehrere
Computer, Prozessoren, einschließlich verteilte Netze verwendet
werden, um Dateien zu dekomprimieren, während gleichzeitig die gewünschte Anordnung
in der Output-Datei bewahrt wird.
-
Wenn
alle Daten verifiziert wurden, ist die Validierung abgeschlossen
und die Output-Datei wird gespeichert (Schritt 208). Wenn
zusätzliche
Daten verifiziert werden müssen,
geht es mit Schritt 204 weiter.
-
3 ist
ein Beispiel des Flusses, beschrieben in 2. Wie
in Schritt 302 beschrieben, lädt ein Dekomprimierungsprogramm
eine Datei namens "file.archive." In Schritt 304 scannt
sie die Zahlen von a bis b und führt
sie durch SHA und SHA-Umkehr und CRC, um eine Zahl zu finden, die
mit der SHA-Signatur übereinstimmt.
In Schritt 306 werden die Blöcke von Block 1 bis Block 7
iteriert, um eine Zahlengruppe zu finden, die mit dem Hash oder
der Prüfsumme
von Block 1 bis Block 7 übereinstimmt.
SHA-Umkehr ist der Block, der durch SHA umgekehrt geführt wird.
In Schritt 308, nachdem eine Zahl alle Prüfsummen
passiert, wird sie als ein Block herausgegeben. Es folgt eine Beschreibung
des Iterierungsprozesses.
Iteration # 1, Block # 1
Wenn
die Prüfsumme
für den
Blockeintrag 1 in Bezug auf die definierten Komprimierungsverfahren
falsch ist
Verarbeitung fährt
fort mit
Iteration # 102999990128932901, Block # 1
Wenn
die Prüfsumme
für den
Blockeintrag 1 in Bezug auf die definierten Komprimierungsverfahren
wahr ist
Der Block wird in file.unarchive herausgegeben.
-
Die
Verarbeitung fährt
für alle
weiteren Blöcke
fort. Iteration # 1, Block # n, bis Iteration # n, Block # n.
-
MODULUS-SKIPPING
-
Modulus-Skipping
ist mit dem Chinesischem Restsatz verwandt. Dieser Satz beantwortet
Fragen wie: Es gibt eine Zahl n dividiert mit 233 ist gleich 3 und
n dividiert mit 6 ist 7. Wie heißt die Zahl? Modulus-Skipping beinhaltet
die Beantwortung von Fragen wie: Es gibt eine binäre Zahl
n dividiert mit einer Million (dem Modulus) ist 1233 und deren SHA-Signatur
x ist und deren MD5-Signatur Y ist und deren Länge 123 Bytes ist. Was ist die
ganzzahlige binäre
Zahl mit 123 Bytes?
-
Modulus-Skipping
ist eine Skipping-Scanart, wie oben beschrieben. Eine Datei stellt
gewöhnlich
eine einzigartige Zahl in Bits dar (d.h. eine 2 Byte-Datei verfügt über eine
Länge von
16 Bits und einen numerischen Wert von 0 bis 65.536). Eine Dateizahl
wird eine Zahl repräsentieren,
die durch die Bits der Datei geformt wurde. Eine Dateizahl kann
durch eine andere Zahl geteilt werden, um einen Rest zu erhalten.
Eine kleinere Zahl passt in eine größere Zahl n Mal mit einem Rest
x (Modulus und Rest). In einem bevorzugten Ausführungsbeispiel wird eine Dateizahl
ein Modulus seines Hashs als Iterator verwenden. Aus diese Weise
wird eine Dateizahl als ein Vielfaches seines Moduluses plus dem
Rest dargestellt werden. Damit wird in der Datei durch die Iteration über (Modulus
Iteration Zahl + der Rest) gesucht werden, um eine Signaturübereinstimmung
zu finden, die gleich der Startsignatur eines unbekannten Dateizahlenblocks
ist.
-
Zum
Beispiel wird ein String entsprechend der vorliegenden Systeme und
Verfahren komprimiert werden. In diesem Beispiel beschreibt der
Begriff "Hash" das Ergebnis der
Komprimierungsverfahren. Um den Originalstring zu finden, kann man
alle Stringkombinationen scannen, um den mit dem gleichen Hash zu
finden oder den Modulus iterieren und den Rest nach den Datenblock
Skip-Scannen, der mit einem Hash übereinstimmt.
-
Zum
Beispiel ist 1000 Mod 15 = 10 oder für die Zahl 1000 bei Verwendung
des Moduluses 15 bleibt ein Rest 10. In anderen Worten ist die Zahl
1000 dividiert mit 15 gleich 66 (und 15·66 = 990) mit einem Rest von
10. Ein Modulus-Scan kann dies verwenden, um die Zahl der Iterationen
zu reduzieren, die zum Auffinden des übereinstimmenden Hashs benötigt werden.
Hier würde
ein Modulus-Scan für
die Zahl 1000 66 Mal iterieren im Vergleich zu 1000 für einen
Nicht-Modulus-Scan.
Die folgende Tabelle veranschaulicht diesen Punkt.
Iteration
n·Modulus
+ Rest = Ergebnis Hash
1·15
+ 10 = 25. abcccc
2·15
+ 10 = 40. deeeee
3·15
+ 10 = 55. xeeeee
4·15
+ 10 = 70. eeerrrr
...
66·15 + 10 = 1000. eeeeee
-
Entsprechend
kann man den Modulus iterieren und die Zahl hashen, bis Sie die
Zahl finden, die mit einem bestimmten Hash übereinstimmt, statt durch alle
die Zahlenkombinationen zu iterieren und den Hash zu nehmen. Auf
diese Weise kann man durch das Vielfache einer Zahl und seines Moduluses
sowie seines Rests iterieren, um eine Zahl zu finden, die mit einem
Hash übereinstimmt.
Dies scheint sehr klein zu sein, bis man einen 1000-Bit-Zahlenblock
nimmt und den Modulus einer 128 Bit- und der Restzahl, womit die
Hash-Suche exponentiell verschnellert wird. Dieses Verfahren kann
eine digitale Signatur Milliarden Mal verschnellern und die Einzigartigkeit
verbessern.
-
Unten
ist ein Beispiel eines iterativen, Nicht-Skipping-Scans. String "a" ist gehasht und dann wird ein String über die
Permutationen iteriert, bis eine Stingzahl mit dem Hash von 0 Null
bis 97 Null in einem c-String übereinstimmt.
-
Der
Digest des Strings a ist 86F7E437FAA5A7FCE15D1DDCB9EAEAEA377667B8
-
Digest
String: 86F7E437FAA5A7FCE15D1DDCB9EAEAEA377667B8: String a!
-
-
-
-
-
-
In
einem Ausführungsbeispiel
wird die Verwendung eines Modulus-Scans die Gesamtanzahl der Iterationen
auf 9 oder 10 verringern. Zum Beispiel 97 Mod 10 = 7, so wird jede
10. Zahl plus 7 gehasht um zu verifizieren, ob der Hash mit dem
Originalstring übereinstimmt,
der durch eine Signatur gehasht ist. Wenn eine Übereinstimmung auftritt, wurde
der String gefunden.
-
Der
Digest des Strings a ist 86F7E437FAA5A7FCE15D1DDCB9EAEAEA377667B8
-
Digest
String: 86F7E437FAA5A7FCE15D1DDCB9EAEAEA377667B8: String a!
-
String
a mit Digest gefunden 86F7E437FAA5A7FCE15D1DDCB9EAEAEA377667B8
Digest_string
86F7E437FAA5A7FCE15D1DDCB9EAEAEA377667B8.
-
Der
kommentierte Quellcode zsha_str.c, beinhaltet in der angefügten Anlage
2, umfasst eine neuartige Modifikation des öffentlichen Domänen-Programms
sha1.c, mit der Hinzufügung
einer SHA-Iterator-Iterierungsfunktion und einer Modifikation der
Hauptfunktionen des Strings.
-
In
einem Ausführungsbeispiel,
wo es eine kleine Datei gibt, wird der Hash an den Dateinamen angehängt. Zum
Beispiel,
test.xyz mit dem Inhalt "a" (wie
im oben genannten Beispiel) wird zu:
test.xyz.xz.sha.86F7E437FAA5A7FCE15D1DDCB9EAEAEA377667
B8.xz,
und der Inhalt der Datei (10 bis 100 Bytes) kann Null
statt 1 sein. Damit können
sich sehr kleine Dateien, die gewöhnlich als 4000er Blöcke gespeichert
werden, die 255 Zeichen-Dateinamen zu Nutzen machen, und die Hash-Dateinamenzusätze verschlüsseln die
Daten als Länge
0. Beachten Sie hier, dass xyz und xz zusätzliche Deskriptoren für die Datei
sein können.
Zum Beispiel kann test.xyz.xz test.archive.01 darstellen.
-
Während der
Validierung würde
ein Scan nach dem Dateinamen als auch nach dem Komprimierungsverfahren
(hier als HASHTYPE) und nach einem Prüfsummenwert suchen (hier als
HASHDIGEST). Andere Deskriptoren können auch an den Dateinamen
angehängt
werden. Zum Beispiel könnte
der modifizierte Dateiname dargestellt werden als:
[FILENAME].xz.[HASHTYPE].[HASHDIGEST].zz
oder
[FILENAME].xz.[HASHTYPE].[HASHDIGEST].[MODULUS].[HASHT
YPE].[HASHDIGEST].xz
-
Die
Activeperl 5.6 sha6b.pl. Datei beinhaltet in der Anlage 2 fügt die XML-
und die DTD-Dateikopfinformationen hinzu, als auch die Verzeichnis-Rekursion,
Untergrenzen- und Befehlsoptionen und Obergrenzenberechnung. Sie
beinhaltet auch die Modulusberechnung. Sie verfügt auch über erweiterte Optionen um
auszuwählen,
welche Dinge auszuführen
sind. Der Perl-Script demonstriert des weiteren den Nutzen und die
Nützlichkeit
einer XML-Signatur weit über
das W3C. Die Perl-Dateien sind von einigen bekannten Windows Activeperl-Modulen
abhängig.
Außerdem
können
die compress.xml-Dateien gezippt werden, was die Größe auf ca.
3 zu 1 im Vergleich zum XML-Output verringert. Im Anhang 2 sind
des weiteren die Dateien palindrome.txt.xml und compress_Modulus2.xml
enthalten.
-
MARKUP-KOMPRIMIERUNGSLAYOUT
-
Die
Komprimierung der Markup-Dateien kann XML, SGML oder binär mit bestimmten
Markup-Tags sein. Eine Auszeichnungssprache kann zusammen mit der
Dokumenttyp-Definition
("DTD") verwendet werden,
um die Komprimierungsdatei zu definieren. Eine DTD kann zur Validierung
verwendet werden, dass die Komprimierungsdatei korrekt ist und nicht
beschädigt
wurde und Daten enthält,
die eine Dekomprimierung zulassen. Im Folgenden sehen Sie ein Beispiel
einer DTD-Datei.
-
-
MESSAGE DIGEST
PROZESSOR
-
In
einem Ausführungsbeispiel
ist ein Message Digest Prozessor bevorzugt angepasst, um die oben beschriebenen
Systeme und Verfahren durchzuführen.
Solch ein Prozessor kann ein kundenspezifischer Mikroprozessor sein,
gerichtet auf das Auffinden von Datenblöcken, die mit einer oder mehreren
Prüfsummen zusammenhängen. Dies
bezieht sich auf Datenkomprimierung mit mehreren Message Digests.
Es wird die Digest-Komprimierung um Tausende, Millionen oder Milliarden
Male beschleunigen und macht die Komprimierung der Digest-Prüfsumme praktikabel.
In einem Ausführungsbeispiel
wird ein Digest Prozessor über
eine beliebige Anzahl an Prozessoren verfügen, z.B. Hunderte bis Tausende
von Prozessorenkernen und Tausende Prozessoren, je nach Konfiguration
und Transistorgröße und anderen
Merkmalen, einschließlich
Speicherkerngröße und feste
Programmierung oder Verbindungsprogramme. In einem Ausführungsbeispiel
wird ein Message Digest Prozessor ein Prozessor sein.
-
4 ist
ein Diagramm eines Message Digest Prozessors. In 4 wird
ein 12-Kern Message Digest-Prozessor 402 gezeigt. Dieser
Prozessor umfasst 12 parallele Prozessoren. Jedoch ist dies nur
ein Beispiel und es kann ein Prozessor mit einer beliebigen Anzahl
verwendet werden. Ebenfalls in 4 wird
ein Prozessor-Mikroplättchen 404,
Koordinator CPU 406, Chip-Paket 408 und parallele
Digest-Kerne 410a–410n gezeigt.
Elemente dieser Komponenten werden unten beschrieben. Beispielmerkmale
eines Message Digest Prozessors (MDP) sind:
Ermöglicht,
dass ein Digest schnell parallel authentifiziert wird.
-
Ein
MDP kann validieren, ob eine vorgegebene Prüfsumme einzigartig ist oder
eine binäre
Zahl finden, die zu einer vorgegebenen Prüfsumme gehört.
-
Ein
Message Digest Prozessor kann als ein Computer-Co-Prozessor existieren,
der beim Verifizieren und Validieren von Signaturen gegen einen
Zahlenbereich hilft, um den originalen binären Input zu finden.
-
Multiple
Message Digest Prozessor Chips können
zusammen parallel verkettet werden.
-
Ein
Message Digest Prozessor kann über
einen Master Prozessor, 406, verfügen, der bestimmt, ob die Ausführung gestoppt
oder weitergeführt
wird, wenn eine binäre
Signaturzahl gefunden wird oder koordiniert die Ausführung.
-
Ein
Message Digest Prozessor kann eine Mikrokern-Architektur genannt werden. Ein Mikrokern-Prozessor
besteht aus Hunderten oder Tausenden kleinen Prozessorenkernen auf
einem einzelnen Prozessor-Chip-Mikroplättchen. Ein großer Kernprozessor
verfügt über weniger
als einhundert Kerne.
-
Ein
Transistor-Chip-Mikroplättchen
kann in parallele Prozesskerne 410a–410n mit einer Minimumgröße geteilt
werden. Jeder Kern verfügt über ein
Scratch-Pad oder einen Pufferspeicher und ein Programmspeicher,
um eine binäre
Zahl nach einem Digest oder Digests gegen einen vorgegebenen Digest
oder Modulus zu testen.
-
Prozessorbefehle
bestehen aus einem Bündel
an Signaturgruppen und Codes zur Verarbeitung einer digitalen Signatur.
Prozessorbefehle können
auch aus einem Programm bestehen, um eine digitale Signatur zu verarbeiten.
Die Instruktionen sind VLIW oder sehr lange Befehlwörter und
können
mehrere 100 Bytes lang sein. Befehle können Daten mit variablen Längen haben.
Befehle können
aus Daten und einem Befehl-Signaturcode bestehen.
-
Der
Prozessor wird über
mehrere dedizierte Prozessorenkerne pro Prozessor,
Prozessor
SIMD (Single Instruction Multiple Data = Einzelbefehl, multiple
Daten) verfügen.
-
Der
Prozessor wird eine Gruppe mit n Bytes finden, die mit einer vorgegebenen
Signatur oder Modulus oder Prüfsumme
oder einer Gruppe von jedem übereinstimmt.
-
Prozessorbefehle
können über Gruppen
digitaler Signaturen und Moduluspaaren verfügen, die eine Prüfsumme zusammensetzen,
die zu einem binären
Byte einer spezifischen Gruppe gehört, um eine spezifizierte binäre Zahl
zu finden, die mit der Prüfsummengruppe übereinstimmt.
-
Unabhängige parallele
Verarbeitung ermöglicht,
dass jede Einheit unabhängig
durchgeführt
wird.
-
Die
Prüfsumme
oder der Signaturcode wird an die Prozessoren verteilt.
-
Jeder
Prozessor wird die Verarbeitung stoppen, wenn eine binäre Zahl
gefunden wurde, die mit einer vorgegebenen Signatur oder Modulus übereinstimmt
oder fortfahren, wenn es Kollisionen gibt.
-
Jeder
Prozessorkern ist eine minimale Anzahl an Transistoren für eine maximale
Verarbeitung. Der 68000 verfügt über 68.000+
Transistoren, würde
aber eine ideale Größe als ein
Multi-Kern Signatur-Prozessor sein.
-
Jeder
Prozessorenkern verfügt über eine
512 oder größere oder
kleinere Byte-Ganzzahlberechnungseinheit (große Ganzzahl) oder Speicherpuffer,
damit Zahlen gegen Prüfsummen
oder Signaturen parallel und iterativ getestet werden können, um
eine Zahl zu finden, die mit einem Set Gruppensignaturen übereinstimmt.
-
Jeder
Prozessor verfügt über eine
ausreichende Programmierung, um multiple Digests (SHA, MD5, Ripe
ect.) gleichzeitig zu berechnen und die Ergebnisse zum Vergleich
mit einer vorgegebenen Prüfsummengruppe
in Registern zu speichern.
-
Jeder
Prozessorenkern hat Hash-Register, die zu verschiedenen Digests
(SHA-Register, MD5-Register, Ripe- Register) als eingebetteter Code oder
ladbarer Befehlscode gehören.
Der Befehl kann in einem Puffer sitzen und an die Kerne in einem
Prozessor vertrieben werden.
-
Der
Digest-Befehl für
einen vorgegebenen Digest wird auf dem Chip festverdrahtet oder
in einem Puffer programmiert sein.
-
Wenn
zum Beispiel ein Prozessor über
ein Budget von 300 Millionen Transistoren verfügt, können sie in 1000 oder mehr
Prozessoren 300.000 Transistoren pro Prozessorenkern für eine Kerngröße packen.
Jeder Prozessorenkern enthält
Register und große
Ganzzahlenunterstützung
von 512 Bytes oder größer und
multiple Message Digest Register sowie Programmspeicher. Ein Prozessor
könnte
sogar über
eine Millionen Kerne verfügen.
-
In
einem Ausführungsbeispiel
besteht ein Prozessorbefehl aus einer beliebigen Zahl an Digests
(Prüfsummenwerte),
einer Moduluszahl, Modulusrest, Modulusexponent und Kollisionszahlen,
wenn es eine für eine
vorgegebene Digestgruppe und Prüfsummen-Befehlscode
für unterschiedliche
Digests gibt. Diese Befehle können
in den Kernspeicher während
der Laufzeit von einem zentralen Flash-Chip geladen werden, der
die Message Digest Programmierung aktualisieren und ihn an die Kerne
verteilen kann. Jedem Kern ist eine Iterationszahl zugewiesen, um
den Digest-Block mit der Kernzahl zu multiplizieren. Wie oben beschrieben,
wenn es 1000 Kerne gibt, dann kann eine Iteration beschrieben werden
als n·die
Moduluszahl·die
Kernzahl + die große
Ganzzahl-Registerzahl. Der Rest wird in ein 512-Byte großes Ganzzahl-Register
geladen. Wenn es einen Exponent gibt, wird die Moduluszahl auf die
Leistung des Exponenten angehoben und zum Rest des großen Ganzzahl-Registers hinzugefügt. Bei
jeder Iteration inkrementiert der Prozessor die 512-Byte große Ganzzahl mit
((Prozessorzahl + Startzahl) die Moduluszahl + (die Registerzahl
oder den Rest)). Der Prozessor führt
eine beliebige Anzahl an Prüfsummentests
an der großen
Ganzzahl aus (die eine beliebige Größe haben kann, hier ist sie
aber 512 Bytes oder größer) und
testet, ob es eine Übereinstimmung
mit einem vorgegebenen Paket an Prüfsummen (wie oben beschrieben)
gibt.
-
Wenn
zum Beispiel der Prozessorenkern 12 eine 512-Byte Ganzzahl findet,
die mit einem vorgegebenen Message Digest oder Gruppe übereinstimmt,
dann wird er einen Interrupt an einen Watchkeeper-Prozessor zurücksenden.
Ein Watchkeeper-Prozessor
bestimmt, ob es irgendwelche Kollisionen gibt und stoppt den Prozessor
und sendet den großen
Ganzzahlenblock an Bytes, der sich im Kern 12 befindet zurück, wenn
es keine anderen Kollisionen gibt. Wenn man mehr als einen Digest
hat, besteht die Möglichkeit
des beiderseitigen Ausschlusses. Wenn man einen 512-Byte Block mit
3 oder 4 Digests mit 20 Bytes und einen Modulusrest und einen Exponent
hat, besteht die Möglichkeit
der parallelen und verteilten Suche eines Blocks, der mit den Digests übereinstimmt.
Ein Modulus wird ausgewählt
werden, der einen Rest mit den wenigsten Ziffern produziert.
-
Ein
paralleler Modulus-Scan kann durch eine Iterationstabelle von einer
Gruppe von n Prozessoren·n CPU-Kerne
pro Prozessor demonstriert werden. Zur Klarstellung sollte dies
das CPU-Iterationsergebnis Modulus + Rest (z.B. Hash oder Digest
einer Zahl) sein. Es könnte
auch sein, dass der Modulus in der Leistung angehoben wurde + der
Modulus·n
CPU-Iterationsergebnis + der gehashte Rest. Dies bezieht sich auf
den Chinesischen Restsatz, bei dem es um Fragen geht, wie: Es gibt
eine Zahl n, dessen Rest dividiert durch 12 gleich 3 und dividiert
durch 17 gleich 6 und dividiert durch 8 gleich 2 ist, wie lautet
die Zahl? Der Chinesische Restsatz wird dieses Ergebnis in Bezug
auf eine Gleichung n·Modulus
+ der Rest stellen (d.h. nu + Rest, wobei n der Modulus und u eine unbekannte
Zahl ist). Eine entsprechende Variante des Chinesischen Restsatzes
ist (n ^ z + n·u
+ Rest = eine Zahl, die die Zahlen mit einem Logarithmus und Exponent
charakterisiert, wobei n der Modulus und z eine Zahl plus der Rest
ist. Ein Beispiel ist 45 Modulus 2, wobei der Rest 1 beträgt. Die
Zahl 2^5 = 32. 2·6
= 12. Also ist (2^5) + (2·6)
+ 1 = 45. Die Zahl 47 Mod 3 = 2. 3^3 = 27. 2·9 = 18. Also ist (3^3) + (2·9) + 2
= 47).
-
Nehmen
Sie zum Beispiel die Anzahl der Prozessoren (als ein Beispiel, 10
Prozessoren mit 1 Kern pro Prozessor). Zur Iteration 1 beginnt jeder
Prozessor mit einer Kernzahl 1 bis 10. Dann wird die Gesamtanzahl der
Prozessoren zur Startnummer der Iteration 1 für Iteration 2 zu einer Zahl
n hinzuaddiert. Unten ist eine Tabelle für einen 10-Kernprozessor mit dem Kern-Iterant von
10.
-
In
der Iteration 1 wird jedem Kern oder Prozessor eine Initialzahl
von 1 bis 10 zugewiesen. In der Iteration 2 wird der Startnummernwert
+ die Zahl der Prozessoren und Kerne gezeigt (10 Prozessoren oder
Kerne). Iterationen 3 oder mehr zeigen die Startnummer plus die
Gesamtanzahl der Kerne oder der Prozessoren.
-
Es
gibt eine Iterationstabelle für
10 Mikroprozessoren. Die Ergebniszahl wird mit der Anzahl des Modulus
multipliziert + dem Rest in parallel und getestet in parallel, um
den übereinstimmenden
Hash zu finden. Die Zahlen 1 bis 10 können auch als Prozessoren-IDs
oder als Startwerte oder Zahlen zugeordnet werden. Den Prozessoren
können
auch 0 bis 9 zugewiesen werden.
-
Iterationstabelle
CPU n (1 bis 10)
-
-
Iterationstabelle CPU
n (0 bis 9)
-
Für die Iteration
1 wird jedem Prozessor eine Initialzahl zugewiesen
-
Beispiel 1: Eine Zahl
dividiert durch (Modulus) 12 ist 2 und hat eine Signatur x. Finden
Sie die Zahl.
-
In
dieser Iterationstabelle teilt jeder der 10 Prozessoren die Zahlen
auf und überprüft sie um
zu sehen, ob es eine vorgegebene Zahl u·der Modulus + den Rest 2
gibt, dessen Signatur oder Prüfsumme
(wobei eine Prüfsumme
eine Signaturen- oder Modulusgruppe oder CRCs sein kann) x ist.
Sie kann dies parallel tun oder die Ausführung stoppen oder fortführen, falls
es eine Kollision gibt, wo eine oder mehrere Zahlen eine Signatur oder
Signaturen teilen und wenn es eine Kollisionszahl gibt, nach der
gesucht wird.
(0·12+2=2)
(1·12+2=14)
(2·12+2=26)
(3·12+2=38)
(4·12+2=50)
(5·12+2=62)
(6·12+2=74)
(7·12+2=86) (8·12+2=98)
(9·12+2=110)
: Iteration 1
(10·12+2=122)
(11·12+2=134)
(12·12+2)
(13·12+2)
(14·12+2)
(15·12+2)
(16·12+2)
(17·12+2)
(18·12+2) (19·12+2):
Iteration 2 = Startwert n + 10 (CPUs)
(20·12+2) (21·12+2) (22·12+2) (23·12+2) (24·12+2) (25·12+2) (26·12+2) (27·12+2) (28·12+2) (29·12+2) ...: Iteration 3 =
vorhergehend n + 10: Also ist 10 + 10 = 20.
-
Sie
setzt das Hinzufügen
und Hashing oder das Durchführen
der Prüfsummentests
auf der binären
Ergebniszahl in jedem Prozessor fort, bis sie eine übereinstimmende
Prüfsumme
oder Signatur findet oder bis die Verarbeitung gestoppt wird.
-
Bei
(0·12+2=2)
wird das Ergebnis 2 durch eine Prüfsumme geführt und wenn die ausgegebene
Prüfsumme
mit einer vorgegebenen Prüfsumme übereinstimmt
und keine Kollisionszahlen bestehen, dann wird die Zahl zurückgesendet.
-
Dies
ist eine Tabelle mit 4 Prozessorenkernen, beginnend mit 0 bis 3.
Für jeden
beginnenden Prozessorenwert. Sie inkrementiert den vorherigen Wert
mit 4 für
jede Iteration.
-
Iterationstabelle
CPU n (1 bis 4)
-
DAS KOMPRIMIERUNGS-PRÜFSUMMEN-ARCHIV
DTD
-
Es
gibt verschiedene XML DTDs, um Signaturen und Hashes zu erfassen.
Diese XML DTD wurde konstruiert, um das für das Erzeugen der XML-Komprimierungsdateien
erforderliche Markup mit Message Digest und Prüfsummen auszudrücken. Ein
Paket mit Signaturen und Konstriktoren bieten ein Verfahren zur
Auffindung eines übereinstimmenden
Datenblocks durch Brute-Force,
der einer Prüfsumme
zugehörig
ist. Eine Kompressions-XML DTD verwendet die digitalen Signaturen
und Hashes und Modulus zum Ausdrücken
eines einzigartigen Identifikators, der für Umkehr-Scans nach einem Datenblock
mit den Signaturattributen verwendet werden kann. Eine normale Signatur-Message
Digest DTD ist ziemlich geläufig.
Der Vorteil dieser DTD ist, dass es flexibel sein kann, indem es
einem Programm erlaubt, das XML-Format als Attribut oder Tag auszuwählen. Das
XML-Markup besteht aus Hash-Paketen, die mit Dateien innerhalb eines
Archivs übereinstimmen.
Das Archiv ist ein XML-Baum, der die Dateien ,Verzeichnisse und
die Dateistruktur sowie die zugehörige Signatur und Datei-Metadaten
enthält.
Dies hat zwei Verwendungszwecke, einer ist zur Regeneration der
Daten und der andere ist, Sicherheit durch das Anbieten eines verbesserten
Message Digests oder Signaturdatei für die Verifizierung des Dateninhalts
zu ermöglichen
und auch um zu verifizieren, dass die Daten nicht modifiziert oder
verändert
wurden.
-
Das
XML-Komprimierungsarchiv DTD ermöglicht,
dass der Inhalt des XML-Archivs verifiziert und überprüft werden kann. Eine Datei
kann gegen eine DTD getestet werden um sicherzustellen, dass die
Struktur und der Inhalt gültig
sind.
-
XML
ermöglicht,
dass die Struktur einer Komprimierung sichtbar wird. Die Komprimierung
der Archivdaten ist gewöhnlich
in regulären
binär komprimierten
Dateien nicht sichtbar. Wenn man eine Datei in XML vorliegen hat,
können
verschiedene Strukturen eingesehen werden, die die Dateiattribute
anzeigen. Der Nachteil bei XML ist, dass es im Ausdrücken der
Daten in Tags im Vergleich zum binären Ausdrücken der Daten einige Zuschläge gibt.
Die compress.xml Dateien können
jedoch mit einem herkömmlichen
Dateikomprimierer gezippt oder komprimiert werden, um deren Größe zu reduzieren.
-
Das
XML Komprimierungsarchiv kann als Metabasis verwenden werden, um
Systemdateiänderungen zu
erfassen und um den Verzeichnisbaum eines Computerdateisystems zu
folgen, um größere Sicherheit
und Integritätsüberprüfung zu
bieten.
-
Das
Folgende ist eine anschauliche XML DTD eines Signaturarchivs zur
Komprimierung und der Überprüfung der
Datenintegrität.
-
TAGS UND ATTRIBUTE
UND BEISPIELE
-
Es
gibt verschiedene XML DTDs, um Signaturen und Hashes zu erfassen.
Diese XML DTD wurde konstruiert, um das für das Erzeugen der XML-Komprimierungsdateien
erforderliche Markup mit Message Digest und Prüfsummen auszudrücken. Ein
Paket mit Signaturen und Konstriktoren bieten ein Verfahren zur
Auffindung eines übereinstimmenden
Datenblocks durch Brute-Force,
der einer Prüfsumme
zugehörig
ist. Eine Kompressions-XML DTD verwendet die digitalen Signaturen
und Hashes und Modulus zum Ausdrücken
eines einzigartigen Identifikators, der für Umkehr-Scans nach einem Datenblock
mit den Signaturattributen verwendet werden kann. Eine normale Signatur-Message
Digest DTD ist ziemlich geläufig.
Der Vorteil dieser DTD ist, dass es flexibel sein kann, indem es
einem Programm erlaubt, das XML-Format als Attribut oder Tag auszuwählen. Das
XML-Markup besteht aus Hash-Paketen, die mit Dateien innerhalb eines
Archivs übereinstimmen.
Das Archiv ist ein XML-Baum, der die Dateien ,Verzeichnisse und
die Dateistruktur sowie die zugehörige Signatur und Datei-Metadaten
enthält.
Dies hat zwei Verwendungszwecke, einer ist zur Regeneration der
Daten und der andere ist, Sicherheit durch das Anbieten eines verbesserten
Message Digests oder Signaturdatei für die Verifizierung des Dateninhalts
zu ermöglichen
und auch um zu verifizieren, dass die Daten nicht modifiziert oder
verändert
wurden.
-
Das
XML-Komprimierungsarchiv DTD ermöglicht,
dass der Inhalt des XML-Archivs verifiziert und überprüft werden kann. Eine Datei
kann gegen eine DTD getestet werden um sicherzustellen, dass die
Struktur und der Inhalt gültig
sind.
-
XML
ermöglicht,
dass die Struktur einer Komprimierung sichtbar wird. Die Komprimierung
der Archivdaten ist gewöhnlich
in regulären
binär komprimierten
Dateien nicht sichtbar. Wenn man eine Datei in XML vorliegen hat,
können
verschiedene Strukturen eingesehen werden, die die Dateiattribute
anzeigen. Der Nachteil bei XML ist, dass es im Ausdrücken der
Daten in Tags im Vergleich zum binären Ausdrücken der Daten einige Zuschläge gibt.
Die compress.xml Dateien können
jedoch mit einem herkömmlichen
Dateikomprimierer gezippt oder komprimiert werden, um deren Größe zu reduzieren.
-
Das
XML Komprimierungsarchiv kann als Metabasis verwenden werden, um
Systemdateiänderungen zu
erfassen und um den Verzeichnisbaum eines Computerdateisystems zu
folgen, um größere Sicherheit
und Integritätsüberprüfung zu
bieten.
-
Das
Folgende ist eine anschauliche XML DTD eines Signaturarchivs zur
Komprimierung und der Überprüfung der
Datenintegrität.
-
Das
Markup einer Archivdatei kann als Tag oder als Attribut ausgedrückt werden.
-
Die
Dateiausgabe ist ein Beispiel eines tagged Markup eines XML-Archivs.
Jede Eigenschaft einer Computerdatei, vom Dateinamen und Dateigröße oder
Dateilänge
zu den entsprechenden Dateien, digitalen Signaturen oder Message
Digests oder Prüfsummen,
können
als Tag verschlüsselt
werden. In diesem Fall stellt der SHA-Tag die SHA-Signatur der Datei
dar, und SHA_REVERSE stellt die Umkehr der Datei dar, die durch
SHA geführt
wurde. In XML-Komprimierungsarchiven
müssen
verschiedene Tags und deren Bedeutung gut definiert werden. Der
SHAMODULUS-Tag stellt die Datei und seinen zugehörigen Inhalt dar und eine große Ganzzahl
von Tausenden von Bytes mit dem Modulus-Rest des SHA-Digests. MODULUSEXPONENT
stellt die Leistung dar, auf die ein Modulus gehoben werden kann,
indem ein Logarithmus verwendet wird, um einen Exponent zu erstellen.
Ein Logarithmus der Dateibytes, die zu einer großen Ganzzahl umgewandelt wurden und
ein Modulus, der als eine Basiszahl dient, erstellen einen Exponent.
Dieser Exponent, der innerhalb des MODULUSEXPONENT-Tags aufgenommen
wurde, erstellt einen Exponent, der die Exponent-Leistung des Moduluses
darstellt, die zum Berechnen der Dateizahl erhöht werden kann. Um den Wert
der großen
Originalganzzahl der Datei oder des Blocks zu finden, wird der Modulus
auf einen Exponent angehoben und mit einem Vielfachen des Modulus
addiert, inkrementiert durch n plus dem Rest und wird durch den
Digest geführt.
Wenn es keinen Exponent gibt, dann würde der Modulus durch ein n·Modulus
plus dem Modulus-Rest
inkrementiert.
-
-
Ein
Attributarchiv verschlüsselt
die XML-Daten in Tags mit Attributen, die abstrakter sind. Die Datei kann
vollständig
mit Tags oder Attributen oder mit einer Zusammensetzung aus Tags
und Attributen verschlüsselt
werden.
-
In
diesem Beispiel ist der Dateiname palindrome.txt und der MD-Tag
stellt den Message Digest dar, wobei das Attribut t den Digest-Typ
darstellt, welcher der Sichere Hash-Algorithmus (Secure Hash Algorithm (SHA))
ist. Das MDR-Tag stellt die Dateidaten dar, die umgekehrt durch
den SHA-Hash geführt
werden. Das MD-Tag mit dem Attribut t des MD5 würde den MD5-Message Digest
darstellen. Der Untergrenzen- oder der Obergrenzen-Tag würde einen
Faktor beschreiben, der sich über
oder unter der großen
Ganzzahl-Datei befindet (die den numerischen Wert oder Produkt der
Bytes einer Datei darstellt).
-
-
-
Der
nächste
Abschnitt zeigt eine Liste der verschiedenen Tags und deren Gebrauch.
-
-
Beschreibung
-
Das
Element Arch stellt den Beginn eines Komprimierungsarchivs dar.
-
-
Beschreibung
-
Das
Element Verzeichnis stellt den Beginn eines Verzeichnisdatei-Attributes
eines Archivs dar. Ein Verzeichnis besteht aus mehr als einem Dateielement
oder Tag. Ein Verzeichnis verfügt über ein
optionales Namens- oder
Passwort-Tag. Der Verzeichnisname kann auch in dem n Attribut ausgedrückt werden.
Das s Attribut kann auch die Größe oder
die Anzahl der Verzeichnisdateien benennen.
-
-
Beschreibung
-
Das
Element Verzeichnis stellt den Beginn eines Verzeichnisdatei-Attributes
eines Archivs dar. Ein Verzeichnis besteht aus mehr als einem Dateielement
oder Tag. Ein Verzeichnis verfügt über ein
optionales Namens- oder
Passwort-Tag. Der Verzeichnisname kann auch in dem n Attribut ausgedrückt werden.
Das s Attribut kann auch die Größe oder
die Anzahl der Verzeichnisdateien benennen.
-
-
Beschreibung
-
Das
Element Datei stellt den Dateiinhalt, einschließlich der Digests und Prüfsummen
sowie die Signaturendaten eines Komprimierungsarchivs dar. Eine
Datei kann mehrere Eigenschaften innerhalb der Elemente oder Tags
haben, einschließlich
Dateiname, Dateilänge
und Kollisionszahl oder Unter- oder Obergrenze, nach deren Übereinstimmung
der Message Digest gescannt werden soll. Die Unter- oder Obergrenze
oder Modulus oder Logarithmus-Exponenten stellen Konstriktoren dar,
nach denen ein Datenblock gescannt werden soll, die mit dem Paket
der Digests oder Prüfsummen übereinstimmen,
die zugehörig
zu einer Datei sind. Eine Datei kann über ein Dateinamen-Tag oder
Betriebssystem-Tag, Passwort-, Message Digest-Tag, Kollision-Zahl,
Untergrenze oder Obergrenze verfügen.
Diese Datei-Tags können
auch als Attribute oder Blocks des beschriebenen Textes ausgedrückt werden.
Zusätzliche
Attribute oder Tags können
hinzugefügt
werden. Das Byteanordnungs-Tag oder mögliche Attribute spezifizieren
die Datei oder die Byteanordnung der digitalen Signatur, ob Groß-Endian
oder Klein-Endian.
-
-
Beschreibung
-
Das
Element Name stellt den Beginn eines Namens einer Datei innerhalb
des Komprimierungsarchivs dar.
-
-
-
Beschreibung
-
Das
Element OS stellt den Betriebssystemparameter-Tag einer Datei dar.
-
-
Beschreibung
-
Das
Element BYTEORDER stellt den Byteanordnungsparameter-Tag einer Datei dar.
Dies gibt das Klein-Endian oder das Groß-Endian Format der Bytes an.
Es können
auch andere Byteanordnungen von Input-Daten einer digitalen Signatur
oder Datei-Input angegeben werden, sodass die Signaturen auf verschiedenen
Computern reproduzierbar sind.
-
-
-
Beschreibung
-
Das
Element Passwort stellt den Passwortschutz einer Datei im Komprimierungsarchiv
dar. Ein Passwort-Tag stellt dar, dass einige Seed zu den Digests
gemischt wurden, um die Daten zu verschlüsseln oder zu schützen.
-
-
Beschreibung
-
Das
Element Block stellt den Block einer Datei dar. Damit kann eine
Datei in mehrere Blöcke
mit n großen
Bytes aufgeteilt werden. Die Blöcke
können
Digests oder Signaturen haben. Die verschiedenen Signaturen können so
eingenistet werden, dass die Blöcke
einzeln getestet werden können.
Ein Modulus-Scan ermöglicht
die Iteration über
eine Datenserie um nach einem Datenblock mit einer zugehörigen Prüfsumme oder
Signatur zu suchen. Der gesamte Datei-Output kann getestet werden
um sicherzustellen, dass die Signatur mit dem Paket der Signaturen
oder Prüfsummen übereinstimmt.
-
-
-
Beschreibung
-
Das
Element Größe stellt
die Größe eines
Dateiblocks oder einer Datei in Bytes dar.
-
-
Beschreibung
-
Das
Element Zeit stellt die Zeit dar, zu der eine Signaturengruppe auf
einer Datei durchgeführt
wurde.
-
-
Beschreibung
-
Das
Element MD stellt den Message Digest eines Dateiblocks oder Datei
dar. Das t Attribut stellt den Digest-Typ und das I Attribut stellt
die Digest-Länge
in Bytes dar.
-
-
Beschreibung
-
Das
Element MDR stellt den Message Digest der Umkehr eines Dateiblocks
oder Datei dar. Jeder Hash oder digitale Signatur verfügt über eine
Umkehr-Transformation, wo die Umkehr des Inputs einen unterschiedlichen
Hash erzeugt. Der extreme Zustand ist ein Palindrom, wo die Signatur
oder Digest vorwärts
oder rückwärts gleich
ist. Das t Attribut stellt den Digest-Typ und das I Attribut stellt
die Digest-Länge in Bytes
dar.
-
-
Beschreibung
-
Das
Element MDX stellt den benutzerdefinierten Digest-Block dar. Das
t Attribut stellt den Digest-Typ und das I Attribut stellt die Digest-Länge in Bytes
dar.
-
-
Beschreibung
-
Das
Element MDC stellt einen Teil-Hash oder digitale Signatur dar. Dies
bedeutet im Grunde genommen, dass eine Signatur, wie SHA, einen
Datenblock oder eine Datei hashen kann. Der resultierende 20 Byte Hash
oder 40 Byte Hex-Hash kann in 2 Bytes oder in so viele Bytes wie
erforderlich geteilt werden. Wenn also eine Prüfsumme oder digitale Signatur über eine
Länge von
20 Bytes verfügt
und wenn die MDC-Länge
2 ist, dann werden nur 2 Bytes oder 4 Zeichen ausgewählt. Eine
Hex-Version einer 20 Byte-Signatur wird 40 Zeichen lang sein. Das
t Attribut stellt den Typ und das I Attribut stellt die Länge dar.
-
-
Beschreibung
-
Das
Element SHA stellt eine SHA 160 Bit digitale Signatur dar. Dies
bedeutet im Grunde genommen, dass eine Signatur, wie SHA, einen
Datenblock oder eine Datei hashen kann
-
-
Beschreibung
-
Das
Element SHA stellt eine SHA 160 Bit digitale Signatur-Umkehr dar. Dies
bedeutet im Grunde genommen, dass eine Signatur, wie SHA-Umkehr,
einen Datenblock oder eine Datei hashen kann.
-
-
Beschreibung
-
Das
Element MD5 stellt eine MD5 (Message Digest 5) digitale Signatur
dar. Dies bedeutet im Grunde genommen, dass eine Signatur, wie ein
MD5, einen Datenblock oder eine Datei hashen und den Hash als Hex innerhalb
der MD5 offenen und geschlossenen Tags oder Elemente verschlüsseln kann.
Das MDC kann verwendet werden, um Hash-Kollisionen zu erzeugen oder
um Kollision_Zahl-Tags für
kleine Daten zu erstellen.
-
-
Beschreibung
-
Das
Element MD5 stellt eine MD5 digitale Signatur mit umgekehrtem Input
der Datei oder des Dateiblocks dar. Dies bedeutet im Grunde genommen,
dass eine Signatur, wie ein MD5, eine Umkehr eines Datenblocks oder
einer Datei hashen und den Hash als Hex innerhalb der MD5_REVERSE
offenen und geschlossenen Tags oder Elemente verschlüsseln kann.
-
-
Beschreibung
-
Das
Element MD4 stellt eine MD4 digitale Signatur dar. Dies bedeutet
im Grunde genommen, dass eine Signatur, wie ein MD4, einen Datenblock
oder eine Datei hashen und den Hash als Hex innerhalb der MD4 offenen
und geschlossenen Tags oder Elemente verschlüsseln kann.
-
-
-
Beschreibung
-
Das
Element MD4 stellt eine MD4 digitale Signatur mit umgekehrtem Input
der Datei oder des Dateiblocks dar. Dies bedeutet im Grunde genommen,
dass eine Signatur, wie ein MD4, eine Umkehr eines Datenblocks oder
einer Datei hashen und den Hash als Hex innerhalb der MD4_REVERSE
offenen und geschlossenen Tags oder Elemente verschlüsseln kann.
-
-
Beschreibung
-
Das
Element MD3 stellt eine MD3 digitale Signatur dar. Dies bedeutet
im Grunde genommen, dass eine Signatur, wie ein MD3, einen Datenblock
oder eine Datei hashen und den Hash als Hex innerhalb der MD3 offenen
und geschlossenen Tags oder Elemente verschlüsseln kann.
-
-
Beschreibung
-
Das
Element MD3 stellt eine MD3 digitale Signatur mit umgekehrtem Input
der Datei oder des Dateiblocks dar. Dies bedeutet im Grunde genommen,
dass eine Signatur, wie ein MD3, eine Umkehr eines Datenblocks oder
einer Datei hashen und den Hash als Hex innerhalb der MD3_REVERSE
offenen und geschlossenen Tags oder Elemente verschlüsseln kann.
-
-
Beschreibung
-
Das
Element MD2 stellt eine MD2 digitale Signatur dar. Dies bedeutet
im Grunde genommen, dass eine Signatur, wie ein MD2, einen Datenblock
oder eine Datei hashen und den Hash als Hex innerhalb der MD2 offenen
und geschlossenen Tags oder Elemente verschlüsseln kann.
-
-
Beschreibung
-
Das
Element MD2 stellt eine MD2 digitale Signatur mit umgekehrtem Input
der Datei oder des Dateiblocks dar. Dies bedeutet im Grunde genommen,
dass eine Signatur, wie ein MD2, eine Umkehr eines Datenblocks oder
einer Datei hashen und den Hash als Hex innerhalb der MD2_REVERSE
offenen und geschlossenen Tags oder Elemente verschlüsseln kann.
-
-
Beschreibung
-
Das
Element Kollisionszahl stellt die Kollisionszahlbeschränkung dar, über die
der Modulus-Scan oder Skip-Scan iterieren sollten. Dies ist eine
Beschränkung,
um mögliche
Datenblöcke
zu differenzieren, die die gleiche Signatur oder Signaturenblock
teilen. Signaturengruppen stellen auch sicher, dass die Daten über einem
Iterationsset differenziert werden. Ein Modulus-Scan wird auch die
Menge der Iterationen differenzieren und reduzieren, um einen Datenblock
zu finden, der zu einem Packet Prüfsummen oder Signaturen gehört. Jedoch
bei Ereignissen, wo eine Kollision besteht (was im Fall des Teil-Hash-Tags
passieren kann) wird der Kollisionszahl-Tag Kollisionen differenzieren.
-
-
Beschreibung
-
Das
Element Untergrenze stellt die Untergrenzenbeschränkung dar, über die
der Modulus-Scan oder Skip-Scan iterieren sollten. Dies ist eine
Beschränkung,
um die Menge der Iterationen zu minimieren, um einen Datenblock
zu finden, der zu einem Paket mit Prüfsummen oder Signaturen gehört. Gewöhnlich stellt
dies einen Bottom-up-Scan dar.
-
-
Beschreibung
-
Das
Element Obergrenze stellt die Obergrenzenbeschränkung dar, über die der Modulus-Scan oder Skip-Scan
iterieren sollten. Dies ist eine Beschränkung, um die Menge der Iterationen
zu minimieren, um einen Datenblock zu finden, der zu einem Paket
mit Prüfsummen
oder Signaturen gehört.
Gewöhnlich
stellt dies einen Bottom-up-Scan dar, kann aber auch einen Top-down
oder einen Umkehr-Scan darstellen, wobei die Obergrenze der Startpunkt
in einer Suche nach Übereinstimmungen
bei einem vorgegebenen Paket an Attributen für eine Datei oder Block ist.
-
-
Beschreibung
-
Das
Element Fakt stellt die Faktenbeschränkung dar, über die der Modulus-Scan oder
Skip-Scan iterieren sollten. Dies ist eine Beschränkung, um
die Menge der Iterationen zu minimieren, um einen Datenblock zu
finden, der zu einem Paket mit Prüfsummen oder Signaturen gehört. Gewöhnlich stellt
dies einen Bottom-up-Scan dar, kann aber auch einen Top-down oder
einen Umkehr-Scan darstellen, wobei die Obergrenze der Startpunkt
in einer Suche nach Übereinstimmungen
bei einem vorgegebenen Paket an Attributen für eine Datei oder Block ist.
-
-
Beschreibung
-
Das
Element SHAMODULUS stellt die Modulus-Scan-Beschränkung dar, über die
der Modulus-Scan oder Skip-Scan iterieren sollte. Dies ist eine
Beschränkung,
um die Menge der Iterationen zu minimieren, um einen Datenblock
zu finden, der zu einem Paket mit Prüfsummen oder Signaturen gehört. Gewöhnlich stellt dies
einen Bottom-up-Scan dar, kann aber auch einen Top-down oder einen
Umkehr-Scan darstellen, wobei die Obergrenze der Startpunkt in einer
Suche nach Übereinstimmungen
bei einem vorgegebenen Paket an Attributen für eine Datei oder Block ist.
Eine Datei und die zugehörigen
Bytes werden zu einer großen
Ganzzahl oder Zahl umgewandelt, und dann nimmt die Zahl den Modulus
des SHA-Digests, um den Rest zu erzeugen. Der Rest des Moduluses
wird innerhalb der SHAMODULUS offenen und geschlossenen Tags aufgenommen, der
für den
Modulus-Scan oder Iteration zur Verfügung steht.
-
-
-
Beschreibung
-
Das
Element MD5MODULUS stellt die Modulus-Scan-Beschränkung dar, über die
der Modulus-Scan oder Skip-Scan iterieren sollte. Dies ist eine
Beschränkung,
um die Menge der Iterationen zu minimieren, um einen Datenblock
zu finden, der zu einem Paket mit Prüfsummen oder Signaturen gehört. Gewöhnlich stellt dies
einen Bottom-up-Scan dar, kann aber auch einen Top-down oder einen
Umkehr-Scan darstellen, wobei die Obergrenze der Startpunkt in einer
Suche nach Übereinstimmungen
bei einem vorgegebenen Paket an Attributen für eine Datei oder Block ist.
Eine Datei und die zugehörigen
Bytes werden zu einer großen
Ganzzahl oder Zahl umgewandelt, und dann nimmt die Zahl den Modulus
des MD 5 Digests, um den Rest zu erzeugen. Der Rest des Moduluses
wird innerhalb der MD5MODULUS offenen und geschlossenen Tags aufgenommen, der
für den
Modulus-Scan oder Iteration zur Verfügung steht.
-
-
Beschreibung
-
Das
Element MODULUS stellt die Modulus-Scan-Beschränkung dar, über die der Modulus-Scan oder Skip-Scan
iterieren sollte. Dies ist eine Beschränkung, um die Menge der Iterationen
zu minimieren, um einen Datenblock zu finden, der zu einem Paket
mit Prüfsummen
oder Signaturen gehört.
Gewöhnlich
stellt dies einen Bottom-up-Scan dar, kann aber auch einen Top-down
oder einen Umkehr-Scan darstellen, wobei die Obergrenze der Startpunkt
in einer Suche nach Übereinstimmungen
bei einem vorgegebenen Paket an Attributen für eine Datei oder Block ist.
Eine Datei und die zugehörigen
Bytes werden zu einer großen
Ganzzahl oder Zahl umgewandelt, und dann nimmt die Zahl den Modulus
des n Attributs, um den Rest zu erzeugen. Der Rest des Moduluses
wird innerhalb der MODULUS offenen und geschlossenen Tags aufgenommen,
der für den
Modulus-Scan oder Iteration zur Verfügung steht. Das Modulus-Tag
kann über
einen Standardwert verfügen.
-
Verwendung
-
Das
Tag nimmt den Modulusrest der Datei auf, der zu einem großen Ganzzahl-Modulus
mit einem Wert umgewandelt wird, der im n Attribut aufgenommen wird.
-
-
Beschreibung
-
Das
Element HUNDREDMODULUS stellt die Modulus-Scan-Beschränkung dar, über die der Modulus-Scan oder
Skip-Scan iterieren sollte. Dies ist eine Beschränkung, um die Menge der Iterationen
zu minimieren, um einen Datenblock zu finden, der zu einem Paket
mit Prüfsummen
oder Signaturen gehört.
Gewöhnlich
stellt dies einen Bottom-up-Scan dar, kann aber auch einen Top-down
oder einen Umkehr-Scan darstellen, wobei die Obergrenze der Startpunkt
in einer Suche nach Übereinstimmungen
bei einem vorgegebenen Paket an Attributen für eine Datei oder Block ist.
Eine Datei und die zugehörigen
Bytes werden zu einer großen
Ganzzahl oder Zahl umgewandelt und dann nimmt die Dateizahl das
Modulus 100, um den Rest zu erzeugen. Der Rest des Moduluses wird innerhalb
der MODULUS offenen und geschlossenen Tags aufgenommen, der für den Modulus-Scan
oder Iteration zur Verfügung
steht.
-
-
Beschreibung
-
Das
Element THOUSANDMODULUS stellt die Modulus-Scan-Beschränkung dar, über die der Modulus-Scan oder
Skip-Scan iterieren sollte. Dies ist eine Beschränkung, um die Menge der Iterationen
zu minimieren, um einen Datenblock zu finden, der zu einem Paket
mit Prüfsummen
oder Signaturen gehört.
Gewöhnlich
stellt dies einen Bottom-up-Scan dar, kann aber auch einen Top-down
oder einen Umkehr-Scan darstellen, wobei die Obergrenze der Startpunkt
in einer Suche nach Übereinstimmungen
bei einem vorgegebenen Paket an Attributen für eine Datei oder Block ist.
Eine Datei und die zugehörigen
Bytes werden zu einer großen
Ganzzahl oder Zahl umgewandelt und dann nimmt die Dateizahl das
Modulus 1000 um den Rest zu erzeugen. Der Rest des Moduluses wird
innerhalb der THOUSANDMODULUS offenen und geschlossenen Tags aufgenommen,
der für
den Modulus-Scan oder Iteration zur Verfügung steht.
-
-
Beschreibung
-
Das
Element MILLIONMODULUS stellt die Modulus-Scan-Beschränkung dar, über die der Modulus-Scan oder
Skip-Scan iterieren sollte. Dies ist eine Beschränkung, um die Menge der Iterationen
zu minimieren, um einen Datenblock zu finden, der zu einem Paket
mit Prüfsummen
oder Signaturen gehört.
Gewöhnlich
stellt dies einen Bottom-up-Scan dar, kann aber auch einen Top-down
oder einen Umkehr-Scan darstellen, wobei die Obergrenze der Startpunkt
in einer Suche nach Übereinstimmungen
bei einem vorgegebenen Paket an Attributen für eine Datei oder Block ist.
Eine Datei und die zugehörigen
Bytes werden zu einer großen
Ganzzahl oder Zahl umgewandelt und dann nimmt die Dateizahl das
Modulus von 1 Million, um den Rest zu erzeugen. Der Rest des Moduluses
wird innerhalb der MILLIONMODULUS offenen und geschlossenen Tags
aufgenommen, der für
den Modulus-Scan oder Iteration zur Verfügung steht.
-
-
Beschreibung
-
Das
Element BILLIONMODULUS stellt die Modulus-Scan-Beschränkung dar, über die der Modulus-Scan oder
Skip-Scan iterieren sollte. Dies ist eine Beschränkung, um die Menge der Iterationen
zu minimieren, um einen Datenblock zu finden, der zu einem Paket
mit Prüfsummen
oder Signaturen gehört.
Gewöhnlich
stellt dies einen Bottom-up-Scan dar, kann aber auch einen Top-down
oder einen Umkehr-Scan darstellen, wobei die Obergrenze der Startpunkt
in einer Suche nach Übereinstimmungen
bei einem vorgegebenen Paket an Attributen für eine Datei oder Block ist.
Eine Datei und die zugehörigen
Bytes werden zu einer großen
Ganzzahl oder Zahl umgewandelt und dann nimmt die Dateizahl das
Modulus von 1 Milliarde, um den Rest zu erzeugen. Der Rest des Moduluses
wird innerhalb der BILLIONMODULUS offenen und geschlossenen Tags
aufgenommen, der für
den Modulus-Scan oder Iteration zur Verfügung steht.
-
-
Beschreibung
-
Das
Element DMOD stellt die Doppel-Modulus-Scan-Beschränkung dar, über die der Modulus-Scan oder
Skip-Scan iterieren sollten. Dies ist eine Beschränkung, um
die Menge der Iterationen zu minimieren, um einen Datenblock zu
finden, der zu einem Paket mit Prüfsummen oder Signaturen gehört. Gewöhnlich stellt dies
einen Bottom-up-Scan dar, kann aber auch einen Top-down oder einen
Umkehr-Scan darstellen, wobei die Obergrenze der Startpunkt in einer
Suche nach Übereinstimmungen
bei einem vorgegebenen Paket an Attributen für eine Datei oder Block ist.
Eine Datei und die zugehörigen
Bytes werden zu einer großen
Ganzzahl oder Zahl umgewandelt und dann nimmt die binäre Dateizahl
ein Paar der Moduluszahlen, um ein Restpaar zu erzeugen. Der Rest
des Moduluses wird innerhalb der DMOD offenen und geschlossenen
Tags aufgenommen, der für
den Modulus-Scan oder Iteration zur Verfügung steht. Das Modulszahlenpaar
kann eingestellt werden, indem man sie innerhalb des Attributes
a und des Attributes b verwendet und dann die Reste innerhalb des
DMOD-Tags, separiert mit Kommas, legt. Wenn es drei Nachweise gibt,
dann ist die erste Zahl der Modulus a, dann ein Komma und die zweite
Zahl ist ein Exponent, auf den der Modulus angehoben werden kann, und
dann kommt nach dem Komma eine dritte Zahl , die der zweite Modulus
ist. Dies ermöglicht
einem Modulus iteriert zu werden und dass ein zweiter Modulus als
ein Test verwendet werden kann, der vor anderen Signaturen für eine Prüfsummenverifizierung
ausgeführt
wird.
-
Ein
Beispiel hierfür
ist das folgende numerische Problem, wo es eine binäre Zahl
x gibt, die, dividiert durch eine Million (Modulus a) 12333 ergibt
und dividiert durch (123333) Modulus b 1232 ergibt und dessen SHA-Signatur
20 Bytes ist und dessen MD5-Signatur 16 Bytes ist und der Modulus
a eine Exponentenleistung von 23 hat um die Zahl zu finden. Es erstellt
auch ein Moduluspaar für
die Dateisignatur.
-
-
Beschreibung
-
Das
Element MODULUSEXPONENT stellt die Modulus-Scan-Beschränkung dar, über die der Modulus-Scan oder
Skip-Scan iterieren sollte. Dies ist eine Beschränkung, um die Menge der Iterationen
zu minimieren, um einen Datenblock zu finden, der zu einem Paket
mit Prüfsummen
oder Signaturen gehört.
Gewöhnlich
stellt dies einen Bottom-up-Scan dar, kann aber auch einen Top-down
oder einen Umkehr-Scan darstellen, wobei die Obergrenze der Startpunkt
in einer Suche nach Übereinstimmungen
bei einem vorgegebenen Paket an Attributen für eine Datei oder Block ist.
Eine Datei und die zugehörigen
Bytes werden zu einer großen
Ganzzahl oder Zahl umgewandelt und dann nimmt die Dateizahl den
Modulus 100, um den Rest zu erzeugen. Der Modulus kann auf eine
Leistung oder Exponent angehoben werden, erzeugt durch den Logarithmus
einer großen
Ganzzahl-Dateizahl und der Modulusbasis, um einen Exponent zu finden,
zu dem der Modulus + der Rest iteriert werden kann. (z.B. (Modulus
1200 Leistung) + (Modulus·1000)
+ Rest) zur Reduzierung der Anzahl der Iterationen, um einen Block
zu finden.
-
-
Beschreibung
-
Das
Element MODULUSMULTIPLE stellt die Modulus-Scan-Beschränkung dar, über die der Modulus-Scan oder
Skip-Scan iterieren sollte. Dies ist eine Beschränkung, um die Menge der Iterationen
zu minimieren, um einen Datenblock zu finden, der zu einem Paket
mit Prüfsummen
oder Signaturen gehört.
Gewöhnlich
stellt dies einen Bottom-up-Scan dar, kann aber auch einen Top-down
oder einen Umkehr-Scan darstellen, wobei die Obergrenze der Startpunkt
in einer Suche nach Übereinstimmungen
bei einem vorgegebenen Paket an Attributen für eine Datei oder Block ist.
Eine Datei und die zugehörigen
Bytes werden zu einer großen
Ganzzahl oder Zahl umgewandelt und dann nimmt die Dateizahl das
Modulus n, um den Rest zu erzeugen. Der Modulus kann mit dem Modulus-Vielfachen
multipliziert werden (z.B. 1000 Modulus) um die Anzahl der Iterationen zu
reduzieren, um einen Block zu finden.
-
-
Dies
ist ein zweites Verwendungsbeispiel. Dies stellt einen alternativen
Gebrauch dar, wo das Modulus einer Zahl einhundert ist und der Rest
12333 beträgt
und das Modulus mit einhundert kann auf einen Exponent 122 angehoben
werden und ist ein Vielfaches von 1000. Dies formt die Gleichung.
Es gibt eine Zahl, die dividiert durch einhundert 33 ergibt und
dessen Modulusexponent 122 ist und ein Modulus-Vielfaches von 1000 hat. Finde die Zahl.
Das Modulus-Vielfache
ist separat vom Exponent, also formt es eine Gleichung 100^ 122 +
100·1000
-
Beschreibung
-
Das
Element Zahl stellt einen Hex-Output von einigen Bytes einer Datei
oder eine allgemeine Zahl zur Definition der Moduluszahl dar.
-
-
-
Beschreibung
-
Das
Element CRC stellt eine CRC-Prüfsumme
dar.
-
Verwendung
-
Unten
ist eine Grundprüfsummen-
digitale Signatur-XML-Archiv-DTD.
-
-
-
-
Ein
Message Digest wird auf einem Input ausgeführt und wird dann geteilt.
-
Der
Message Digest wird auf n Bytes geteilt.
-
Also
kann ein 20 Byte SHA-Digest für
kleine Input-Dateien geteilt werden, um Hashes mit variablen Längen zu
erstellen.
-
-
-
Eine
Kollision findet statt, wenn es einen Message Digest gibt, bei dem
zwei
Inputs die gleiche Output-Digest-Liste produziert
-
Eine
Kollisionszahl kann verwendet werden, um Kollisionen zu differenzieren.
-
Das
erste Input, das den Digest produziert, ist Kollision Nummer eins.
-
Aufeinanderfolgende
Kollisionen inkrementieren die Zahl mit eins.
-
Die
12. Kollision legt die Kollisionszahl auf 12 fest.
-
-
BEISPIELE
-
Dies
ist eine Liste von Markup-Beispielen im compress2.dtd-Format.
-
Beispiel 1: palindrome.xml
-
Beispiel
1 demonstriert eine Datei namens palindrome.txt mit einer Größe von 12
Bytes, gefolgt von dem SHA-Digest, SHA-Umkehr-Digest, Ripe160 Digest
und Ripe 160 Umkehr-Digest
mit beiliegenden Tags. Das md-Tag stellt einen Message Digest dar
und das t Attribut stellt den Typ dar. Die Unter- und Obergrenze sind
leer. Die Datei ist gut geformt und innerhalb eines Arch-Tags eingeschlossen.
-
-
-
Beispiel 2:
-
Dies
ist ein XML-Beispiel des Verzeichnis-Markups für ein Archiv. Innerhalb eines
Verzeichnisses können
mehrere Dateien existieren, und Dateien können außerhalb eines Verzeichnisses
in einem separaten Markup existieren.
-
-
-
Beispiel 3
-
Das
Beispiel stellt den Gebrauch der Kollisionszahl dar
-
-
Beispiel 4
-
Dieses
Beispiel stellt Datei-Bytes dar, konvertiert zu einer großen Ganzzahl,
Modulus 1 Million, eingeschlossen im Million-Modulus-Tag. Es gibt
auch eine Unter- und Obergrenzenzahl.
-
-
Beispiel 5
-
Dieses
Beispiel zeigt einen geteilten Digest-Tag mdc, wo nur 1 oder 2 oder
3 Bytes des Digests für SHA
und Ripe160 oder md2 verwendet werden. Die Zahlen der Bytes, die
im I Attribut verwendet werden.
-
-
-
Beispiel 6
-
Dieses
Beispiel zeigt den Gebrauch der Dateiblöcke für die Dateiausgabe. Die Datei
wurde in zwei unterschiedliche Blöcke, 2.000.000 und 1.961.651
Bytes lang geteilt und die Bytes würden dann durch einen Digest-SHA
und SHA-Umkehr passiert. Die Digest-Werte werden am einfachsten
in unberechneten Werten gezeigt.
-
-
-
Während die
vorliegende Erfindung in Bezug auf verschiedene Ausführungsbeispiele
dargestellt und erläutert
wurde, besteht nicht die Absicht, sie auf die gezeigten Details
zu beschränken,
da verschiedene Modifikationen und Strukturänderungen vorgenommen werden
können,
ohne vom Sinn der vorliegenden Erfindung abzuweichen. Ohne weitere
Analyse wird das Vorbenannte den Inhalt der vorliegenden Erfindung
offen legen, den Andere, durch das Anwenden von heutigen Kenntnissen,
leicht aus verschiedenen Anwendungen anpassen können, ohne Merkmale auszulassen,
die vom Standpunkt der früheren
Technik wesentliche Charakteristiken der generischen oder spezifischen
Aspekte dieser Erfindung darstellen.
-
INFORMATIONEN ZUR ANLAGE.
-
Anlage 1:
-
Anlage
1 beinhaltet: (a) zwei Windows Activeperl-Programme (sha4.pl und
sha4b.pl); (b) den entsprechenden XML-Output (md.out und mdb.out)
(der XML-Output beinhaltet drei Keys); (c) ein Windows Activeperl-Programm
(sha4reverse.pl), das die Umkehr einer Datei durch das sha führt und
es als SHA_REVERSE Markup aufbewahrt; (d) entsprechender Output
in mdreverse.out; und (e) eine einfache komprimierte XML-DTD als
compress.dtd für
die Integrität
oder Validierung.
-
Es
gibt auch eine Key-Kollision von der Prüfsumme, sie kann nummeriert
werden, um sie von anderen Zahlen, mit der sie kollidiert, zu unterscheiden.
Wenn zwei Zahlen einen Hash teilen, kann ein Zahlen-Key zugewiesen
werden, um sie zu differenzieren. mdreverse.collision.out.txt verfügt über eine
Kollisionszahl im Markup. Dies demonstriert eine Art der Lösung von
Kollisionen.
-
Anlage 2:
-
Dateiliste der Anlage
2:
-
- zsha_stra.c, 6 Seiten
- out.test.run.txt.txt, 2 Seiten
- outb.txt, 3 Seiten
- compress3.xml, 11 Seiten
- compress4.xml, 12 Seiten
- compress5.floor.xml, 1 Seite
- compress.modulus5.xml, 1 Seite
- compress.modulus5b.xml, 1 Seite
- compress.palindromea.xml, 1 Seite
- compress.palindromeb.xml, 1 Seite
- compress.xml, 1 Seite
- compress_modulus2.xml, 1 Seite
- compress_modulus.xml, 1 Seite
- palindrome.txt.xml, 1 Seite
- sha6b.pl, 8 Seiten
- Seiten insgesamt in der Anlage 2: 51
-
Anlage 2 – Dateibeschreibungen
-
- Zsha_stra.c -- Dies ist ein illustratives Iterator-Programm, modifiziert
in c, um Bytes zu finden, die einem SHA Digest-Wert entsprechen.
Nachdem der SHA Digest gefunden wurde, wird der String herausgegeben,
es könnte
aber auch eine Datei erstellt werden.
- Out.test.run.txt.txt -- Dies ist ein Beispiel einer Iteration über einer
Gruppe von Bytes und dem Hash-Wert.
- Outb.txt -- Dies ist ein Log der Iteration über einem Datenblock bis ein
SHA (Secure Hash Digest) gefunden wurde. Der Iterator ähnelt einem
Kilometerzähler
eines Autos, wo die Zahl alle 255 Iterationen weitergeht.
- compress3.xml -- Dies ist eine XML-Datei
- compress4.xml -- Dies ist ein Grundbeispiel eines Verzeichnisses
und einer Dateistruktur einer hierarchischen XML-Datei, erzeugt
durch sha6b.pl. Es zeigt den Output von 6 unterschiedlichen Digests,
um Dateidaten einzigartig zu identifizieren. Die verwendeten Digests
sind SHA, SHA Umkehr, Ripe 160 und MD5, MD4, MD3 and MD2.
- compress5.floor.xml -- Dies ist ein Grundbeispiel eines Verzeichnisses
und einer Dateistruktur einer hierarchischen XML-Datei Dies demonstriert
auch eine einfache Untergrenze. Die Untergrenze ist 841 und die
Obergrenze ist 842, was den Bereich einer erweiterten Zahl darstellt,
in dem das Programm nach einem Byteblock suchen wird, der zu den
gleichen Digests hasht, wie für
die Datei aufgelistet.
- compress.modulus5.xml -- Dies ist ein Markup der Digests einer
Datei mit einem Modulus-Tag.
- compress.modulus5b.xml -- Dies ist eine andere Version der Datei
große
Ganzzahl, dividiert durch einen Modulus, um einen Rest von 1310
zu formen, der zwischen den Modulus-Tags ausgegeben wird. Diese Beispiel-Digest-XML
wird durch sha6b.pl erzeugt. Sie verfügt über 7 unterschiedliche Digests,
die zur Validierung einer Datei verwendet werden.
- compress.palindromea.xml – Dies
ist eine Palindrom-XML-Datei,
wo die Daten den gleichen Hash-Rückwärts wie
Vorwärts
haben.
- compress.xml -- Dies ist ein Basis-XML-Markup, erzeugt durch
den sha6b.pl Perl Script.
- compress_modulus2.xml -- Dies ist eine andere Version des XML-Outputs
durch das sha6b.pl des Modulus. Das Laden der Datei in eine große Ganzzahl
erstellt den Modulus einer Datei unter Verwendung eines spezifizierten
Wertes. Eine große
Ganzzahl ist ein nicht-nativer Typ, der Tausende Ziffern lang sein
kann und ermöglicht,
dass große
Zahlen errechnet werden können.
Dies wird auch durch das Modulus-Scanning
demonstriert, wo eine Moduluszahl zu einer großen Ganzzahl plus dem Rest
hinzu addiert und gehasht wird, bis ein übereinstimmender Wert gefunden
wird.
- compress_modulus.xml -- Diese XML-Datei, erzeugt vom Perl Script
sha6b.pl demonstriert den Output eines Dateisignaturpaketes mit
Modulus-Tags.
- palindrome.txt.xml -- Diese Datei demonstriert was geschieht,
wenn eine Datei den gleichen Digest für die Umkehr des Inputs wie
den Vorwärts-Input
hat.
- sha6b.pl -- Diese Datei ist der XML-Dateisignatur-Generator. Er generiert
XML-Digestpakete von einem Verzeichnis oder Dateibaum auf einem
Computer. Zusätzliche
Informationen und Tags können
hinzugefügt
werden. Außerdem
ist er erweiterbar und ermöglicht
Hunderte von verschiedenen Digest-Kombinationen, die im XML-Output
verwendet werden. Der XML-Output ist gut geformt. Jede Digest-Operation
kann in einem Funktions-Call verpackt werden und die Befehlszeilenparameter
ermöglichen
unterschiedliche Kombinationen von Signaturen und Dateiköpfe oder
DTDs, die beinhaltet oder ausgeschlossen werden können. Die
Einzigartigkeit eines Digests kann extrem präzise sein.
- Sha_stringcmp.c -- Dies ist die aktuellere Version von sha_stringcmp.c
Es ist im Grunde genommen eine korrigierte Version von zsha_stra.c
- Sha_strcmp_log.txt -- Dies ist der Log-Output, der demonstriert,
wie die Verwendung eines Digests einen Datenblock oder ein Byte-Set
in einer Datei einzigartig identifizieren kann.