DE102005020881A1 - System und Verfahren zur Datenkomprimierung und Dekomprimierung - Google Patents

System und Verfahren zur Datenkomprimierung und Dekomprimierung Download PDF

Info

Publication number
DE102005020881A1
DE102005020881A1 DE200510020881 DE102005020881A DE102005020881A1 DE 102005020881 A1 DE102005020881 A1 DE 102005020881A1 DE 200510020881 DE200510020881 DE 200510020881 DE 102005020881 A DE102005020881 A DE 102005020881A DE 102005020881 A1 DE102005020881 A1 DE 102005020881A1
Authority
DE
Germany
Prior art keywords
checksum
data
data block
file
processors
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
DE200510020881
Other languages
English (en)
Inventor
Nathan Scott Miamisburg Ross
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Elsevier Inc
Original Assignee
Elsevier Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Elsevier Inc filed Critical Elsevier Inc
Publication of DE102005020881A1 publication Critical patent/DE102005020881A1/de
Ceased legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/20Manipulating the length of blocks of bits, e.g. padding or block truncation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/30Compression, e.g. Merkle-Damgard construction

Abstract

Beispielhaft ist das vorliegende System in verschiedenen Ausgestaltungen ausgelegt, um die Größe von Daten auf einem Computer durch Komprimierung zu reduzieren, um den Hash, Message Digest und die Prüfsummentechnologie sowie deren Anwendung auf Informationen und Datenspeicherung zu verbessern, um die Einzigartigkeit durch beiderseitigen Ausschluss in Hash- und Prüfsummentests zu verbessern, um Prüfsummentests zu verbessern, um bessere Computersicherheit zu schaffen, um ein XML-Komprimierungsformat zu erstellen und um binäre Komprimierungsformate zu XML oder zu einer anderen Auszeichnungssprache zu verschieben, um Hashes variabler Längen und Message Digest anzuwenden und um eine XML-basierte Prüfsumme zu erstellen, die verwendet werden kann, um die Integrität der Dateien zu verifizieren.

Description

  • 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:
    Figure 00190001
  • 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.
  • Figure 00210001
  • 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.
  • Figure 00250001
  • 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:
    Figure 00270001
    Figure 00280001
  • 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:
    Figure 00280002
    Figure 00290001
    Figure 00300001
  • 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!
    Figure 00340001
  • Figure 00350001
  • Figure 00360001
  • Figure 00370001
  • Figure 00380001
  • Figure 00390001
  • 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!
    Figure 00400001
  • 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.
  • Figure 00430001
  • 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 410a410n 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 410a410n 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)
    Figure 00490001
  • Figure 00500001
  • Iterationstabelle CPU n (0 bis 9)
  • Für die Iteration 1 wird jedem Prozessor eine Initialzahl zugewiesen
    Figure 00500002
  • 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)
    Figure 00520001
  • 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.
  • Figure 00560001
  • 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).
  • Figure 00570001
  • Figure 00580001
  • Der nächste Abschnitt zeigt eine Liste der verschiedenen Tags und deren Gebrauch.
  • Figure 00580002
  • Beschreibung
  • Das Element Arch stellt den Beginn eines Komprimierungsarchivs dar.
  • Verwendung
    Figure 00580003
  • 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.
  • Verwendung
    Figure 00590001
  • 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.
  • Verwendung
    Figure 00590002
  • 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.
  • Verwendung
    Figure 00600001
  • Beschreibung
  • Das Element Name stellt den Beginn eines Namens einer Datei innerhalb des Komprimierungsarchivs dar.
  • Verwendung
    Figure 00600002
  • Figure 00610001
  • Beschreibung
  • Das Element OS stellt den Betriebssystemparameter-Tag einer Datei dar.
  • Verwendung
    Figure 00610002
  • 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.
  • Verwendung
    Figure 00610003
  • Figure 00620001
  • 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.
  • Verwendung
    Figure 00620002
  • 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.
  • Verwendung
    Figure 00620003
  • Figure 00630001
  • Beschreibung
  • Das Element Größe stellt die Größe eines Dateiblocks oder einer Datei in Bytes dar.
  • Verwendung
    Figure 00630002
  • Beschreibung
  • Das Element Zeit stellt die Zeit dar, zu der eine Signaturengruppe auf einer Datei durchgeführt wurde.
  • Verwendung
    Figure 00630003
  • 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.
  • Verwendung
    Figure 00640001
  • 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.
  • Verwendung
    Figure 00640002
  • 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.
  • Verwendung
    Figure 00650001
  • 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.
  • Verwendung
    Figure 00650002
  • 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
  • Verwendung
    Figure 00660001
  • 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.
  • Verwendung
    Figure 00660002
  • 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.
  • Verwendung
    Figure 00670001
  • 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.
  • Verwendung
    Figure 00670002
  • 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.
  • Verwendung
    Figure 00670003
  • Figure 00680001
  • 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.
  • Verwendung
    Figure 00680002
  • 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.
  • Verwendung
    Figure 00680003
  • 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.
  • Verwendung
    Figure 00690001
  • 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.
  • Verwendung
    Figure 00690002
  • 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.
  • Verwendung
    Figure 00700001
  • 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.
  • Verwendung
    Figure 00700002
  • 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.
  • Verwendung
    Figure 00710001
  • 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.
  • Verwendung
    Figure 00710002
  • 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.
  • Verwendung
    Figure 00720001
  • 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.
  • Verwendung
    Figure 00720002
  • Figure 00730001
  • 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.
  • Verwendung
    Figure 00730002
  • 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.
  • Figure 00740001
  • 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.
  • Verwendung
    Figure 00750001
  • 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.
  • Verwendung
    Figure 00750002
  • 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.
  • Verwendung
    Figure 00760001
  • 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.
  • Verwendung
    Figure 00770001
  • 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.
  • Verwendung
    Figure 00780001
  • 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.
  • Verwendung
    Figure 00790001
  • 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.
  • Verwendung
    Figure 00800001
  • 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
    Figure 00800002
  • Beschreibung
  • Das Element Zahl stellt einen Hex-Output von einigen Bytes einer Datei oder eine allgemeine Zahl zur Definition der Moduluszahl dar.
  • Verwendung
    Figure 00800003
  • Figure 00810001
  • Beschreibung
  • Das Element CRC stellt eine CRC-Prüfsumme dar.
  • Verwendung
  • Unten ist eine Grundprüfsummen- digitale Signatur-XML-Archiv-DTD.
  • Figure 00810002
  • Figure 00820001
  • Figure 00830001
  • 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.
  • Figure 00830002
  • Figure 00840001
  • 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.
  • Figure 00840002
  • 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.
  • Figure 00850001
  • Figure 00860001
  • 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.
  • Figure 00860002
  • Figure 00870001
  • Beispiel 3
  • Das Beispiel stellt den Gebrauch der Kollisionszahl dar
  • Figure 00870002
  • 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.
  • Figure 00880001
  • 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.
  • Figure 00880002
  • Figure 00890001
  • 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.
  • Figure 00890002
  • Figure 00900001
  • 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.

Claims (20)

  1. System zur Datenspeicherung, 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.
  2. System zur Datenspeicherung, 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.
  3. System nach Anspruch 1, außerdem umfassend: einen oder mehrere Prozessoren, außerdem betreibbar zur Bestimmung eines Attributs des 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, Modifikationsdatum, Erlaubnis, Besitzer oder Byteanordnung ist; einen oder mehrere Prozessoren, betreibbar zur Erstellung eines Dateneintrags, der das Attribut umfasst; und einen oder mehrere Prozessoren, betreibbar zur Speicherung des Dateneintrags in einem computerlesbaren Medium.
  4. System nach Anspruch 1, wobei der zweite Prüfsummenalgorithmus der erste Prüfsummenalgorithmus ist.
  5. System nach Anspruch 1, wobei die Attribute mindestens eines der folgenden umfassen: Name, Größe, Länge, Hash-Typ, Prüfsummentyp, Digest-Typ, Füllung, Untergrenze, Obergrenze, Modulus, Kollision, Verzeichnis, Wurzel, Laufwerk, Pfad, Datum, Zeit, Modifikationsdatum, Erlaubnis, Besitzer oder Byteanordnung.
  6. System nach Anspruch 1, wobei der Dateneintrag in einer Auszeichnungssprache geschrieben ist.
  7. System nach Anspruch 6, wobei die Auszeichnungssprache entweder XML oder SGML ist.
  8. System nach Anspruch 1, wobei ein oder mehrere Prüfsummenwerte mindestens eines ist von einem gehashten wert, einem Digest, und einer Prüfsummenzahl.
  9. System nach Anspruch 1, wobei ein oder mehrere Prüfsummenwerte erzeugt werden, 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.
  10. System nach Anspruch 1, wobei mindestens zwei der einen oder mehrere Prozessoren parallel betrieben werden.
  11. System für Datenwiedergewinnung, 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.
  12. System nach Anspruch 11, das außerdem einen oder mehrere Prozessoren umfasst, die betreibbar sind, um eine oder mehrere erste Datenblock-Kandidaten als den Werten in dem ersten Satz von Prüfsummenwerten entsprechend zu identifizieren, die gleich dem ersten Prüfsummenwert sind.
  13. System nach Anspruch 11, außerdem umfassend: einen oder mehrere Prozessoren, betreibbar zur Erzeugung eines zweiten Satzes von Prüfsummenwerten durch das Anwenden des zweiten Prüfsummenalgorithmus auf die ersten Datenblock-Kandidaten; einen oder mehrere Prozessoren, betreibbar zum Vergleich des zweiten Satzes von Prüfsummenwerten mit dem zweiten Prüfsummenwert; einen oder mehrere Prozessoren, betreibbar zur Identifikation eines zweiten Satzes von Datenblock-Kandidaten als den Werten in dem zweiten Satz von Prüfsummenwerten entsprechend, die gleich dem zweiten Prüfsummenwert sind; und einen oder mehrere Prozessoren, betreibbar zur Identifikation aller Datenblöcke in dem zweiten Satz von Datenblock-Kandidaten als potentiell dem ersten Datenblock entsprechend.
  14. System nach Anspruch 11, wobei der erste Prüfsummenalgorithmus auf ausgewählte Datenblöcke des ersten Satzes von Datenblöcken durch mindestens einen linearen Scan oder nicht-linearen Scan angewendet wird.
  15. System nach Anspruch 14, wobei der nicht-lineare Scan einen Skipping-Scan, einen Modulus-Scan oder einen exponentiellen Scan umfasst.
  16. System nach Anspruch 11, wobei jeder Datenblock-Kandidat einer einzigartigen Kollisionszahl zugeordnet ist.
  17. System nach Anspruch 11, wo mindestens einer der ein oder mehreren Prozessoren eine Ganzzahl-Berechnungseinheit sowie ein oder mehrere Hash-Register umfasst.
  18. System zur Datenspeicherung, 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.
  19. System zur Datenspeicherung, 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.
  20. System zur Datenwiedergewinnung, 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.
DE200510020881 2004-05-04 2005-05-04 System und Verfahren zur Datenkomprimierung und Dekomprimierung Ceased DE102005020881A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US56830404P 2004-05-04 2004-05-04
US60/568,304 2004-05-04
US60360404P 2004-08-23 2004-08-23
US60/603,604 2004-08-23

Publications (1)

Publication Number Publication Date
DE102005020881A1 true DE102005020881A1 (de) 2006-03-09

Family

ID=34681706

Family Applications (1)

Application Number Title Priority Date Filing Date
DE200510020881 Ceased DE102005020881A1 (de) 2004-05-04 2005-05-04 System und Verfahren zur Datenkomprimierung und Dekomprimierung

Country Status (5)

Country Link
US (2) US8977859B2 (de)
EP (1) EP1594252B1 (de)
DE (1) DE102005020881A1 (de)
GB (1) GB2413867B (de)
NL (1) NL1028971C2 (de)

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7047488B2 (en) 2002-07-19 2006-05-16 Open Invention Network Registry driven interoperability and exchange of documents
US7433861B2 (en) * 2003-03-13 2008-10-07 International Business Machines Corporation Byte-code representations of actual data to reduce network traffic in database transactions
US7200603B1 (en) * 2004-01-08 2007-04-03 Network Appliance, Inc. In a data storage server, for each subsets which does not contain compressed data after the compression, a predetermined value is stored in the corresponding entry of the corresponding compression group to indicate that corresponding data is compressed
US7949666B2 (en) 2004-07-09 2011-05-24 Ricoh, Ltd. Synchronizing distributed work through document logs
US7653712B1 (en) * 2004-09-30 2010-01-26 Emc Corporation Methods and apparatus for processing configuration data
US7761432B2 (en) * 2005-11-04 2010-07-20 Oracle America, Inc. Inheritable file system properties
US7698269B2 (en) * 2005-11-29 2010-04-13 Yahoo! Inc. URL shortening and authentication with reverse hash lookup
US7593949B2 (en) * 2006-01-09 2009-09-22 Microsoft Corporation Compression of structured documents
US8024427B2 (en) * 2006-01-09 2011-09-20 Microsoft Corporation Dynamic storage of documents
US7853573B2 (en) * 2006-05-03 2010-12-14 Oracle International Corporation Efficient replication of XML data in a relational database management system
US8001385B2 (en) * 2006-06-21 2011-08-16 Intel Corporation Method and apparatus for flash updates with secure flash
US20080016023A1 (en) * 2006-07-17 2008-01-17 The Mathworks, Inc. Storing and loading data in an array-based computing environment
US8479004B2 (en) 2006-08-31 2013-07-02 Ricoh Co., Ltd Paper-based document logging
GB2446175B (en) * 2007-01-31 2011-06-29 Hewlett Packard Development Co Method of updating data
US8006094B2 (en) 2007-02-21 2011-08-23 Ricoh Co., Ltd. Trustworthy timestamps and certifiable clocks using logs linked by cryptographic hashes
US8996483B2 (en) 2007-03-28 2015-03-31 Ricoh Co., Ltd. Method and apparatus for recording associations with logs
US20080243688A1 (en) * 2007-03-28 2008-10-02 Hart Peter E Method and Apparatus for Recording Transactions with a Portable Logging Device
CN101056252B (zh) * 2007-06-07 2010-04-21 中兴通讯股份有限公司 压缩文件的传播方法
US8078648B2 (en) * 2007-06-15 2011-12-13 Microsoft Corporation Data structure for supporting a single access operation
FI120422B (fi) * 2007-07-02 2009-10-15 Tellabs Oy Menetelmä ja laitteita muutoslokin kompressoimiseksi käyttäen flash-transaktioita
US8739022B2 (en) * 2007-09-27 2014-05-27 The Research Foundation For The State University Of New York Parallel approach to XML parsing
US7836107B2 (en) * 2007-12-20 2010-11-16 Microsoft Corporation Disk seek optimized file system
US8434000B2 (en) * 2008-01-02 2013-04-30 International Business Machines Corporation System and method for archiving portions of an output of a web application
WO2009132261A1 (en) * 2008-04-25 2009-10-29 Vmware, Inc. Updating a file using differences and file format therefor
FR2936623B1 (fr) * 2008-09-30 2011-03-04 Canon Kk Procede de codage d'un document structure et de decodage, dispositifs correspondants
US8185733B2 (en) 2008-10-02 2012-05-22 Ricoh Co., Ltd. Method and apparatus for automatically publishing content based identifiers
GB2466425B (en) * 2008-10-09 2014-01-08 Sonicwall Inc Computer networks
US8730056B2 (en) * 2008-11-11 2014-05-20 Itron, Inc. System and method of high volume import, validation and estimation of meter data
US8782514B1 (en) * 2008-12-12 2014-07-15 The Research Foundation For The State University Of New York Parallel XML parsing using meta-DFAs
US8909566B2 (en) * 2009-06-23 2014-12-09 Oracle International Corporation Method, a computer program and apparatus for analyzing symbols in a computer
WO2011035468A1 (zh) * 2009-09-23 2011-03-31 华为技术有限公司 广播业务分组的实现方法、装置和系统
US8150859B2 (en) 2010-02-05 2012-04-03 Microsoft Corporation Semantic table of contents for search results
US8983989B2 (en) * 2010-02-05 2015-03-17 Microsoft Technology Licensing, Llc Contextual queries
US8903794B2 (en) * 2010-02-05 2014-12-02 Microsoft Corporation Generating and presenting lateral concepts
US20110231395A1 (en) * 2010-03-19 2011-09-22 Microsoft Corporation Presenting answers
GB201008868D0 (en) * 2010-05-27 2010-07-14 Qinetiq Ltd Computer security
US20110302149A1 (en) * 2010-06-07 2011-12-08 Microsoft Corporation Identifying dominant concepts across multiple sources
US20120323989A1 (en) * 2011-03-23 2012-12-20 Telefonaktiebolaget L M Ericsson (Publ) Dynamic distribution of target selection algorithms
US8412849B2 (en) * 2011-04-27 2013-04-02 American Express Travel Related Services Company, Inc. Systems and methods for lossless compression of data and high speed manipulation thereof
US8914545B2 (en) 2011-04-27 2014-12-16 Iii Holdings 1, Llc Systems and methods for lossless compression of data and high speed manipulation thereof
DE102012020442B4 (de) * 2012-10-18 2020-03-05 Robert Bosch Gmbh Verfahren zum Überprüfen von Daten mittels wenigstens zweier Prüfsummen
US9876507B2 (en) * 2013-02-22 2018-01-23 Sap Se Semantic compression of structured data
US9338172B2 (en) * 2013-03-13 2016-05-10 Futurewei Technologies, Inc. Enhanced IPsec anti-replay/anti-DDOS performance
US9589130B2 (en) * 2013-08-20 2017-03-07 White Cloud Security, L.L.C. Application trust-listing security service
US10187358B2 (en) 2013-12-03 2019-01-22 Amazon Technologies, Inc. Data transfer optimizations
CN106537402A (zh) 2014-08-01 2017-03-22 索尼公司 内容格式转换验证
US10102218B2 (en) * 2014-09-30 2018-10-16 Microsoft Technology Licensing, Llc File system with per-extent checksums
KR20160070512A (ko) 2014-12-10 2016-06-20 삼성전자주식회사 반도체 장치 및 그 동작 방법
US10097345B2 (en) * 2015-04-14 2018-10-09 PeerNova, Inc. Secure hash algorithm in digital hardware for cryptographic applications
FR3035289B1 (fr) * 2015-04-14 2017-03-31 My Pharma Company Procedes de generation et de verification d'une cle de securite d'une unite monetaire virtuelle
US10348506B2 (en) * 2016-09-30 2019-07-09 International Business Machines Corporation Determination of state of padding operation
CN106776105B (zh) * 2016-11-15 2020-02-21 惠州Tcl移动通信有限公司 一种系统启动文件的校验及编译方法
US11063746B2 (en) * 2018-04-19 2021-07-13 Electronics And Telecommunications Research Institute Method for selecting consensus node using nonce and method and apparatus for generating blockchain using the same
US11017170B2 (en) * 2018-09-27 2021-05-25 At&T Intellectual Property I, L.P. Encoding and storing text using DNA sequences
US10917655B2 (en) * 2018-12-06 2021-02-09 Apical Limited Video data processing using an image signatures algorithm to reduce data for visually similar regions
US11544215B2 (en) * 2019-09-05 2023-01-03 Visa International Service Association System, method, and computer program product for generating a file structure
US11586493B2 (en) * 2021-03-29 2023-02-21 Red Hat, Inc. Efficient checksum computation

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5032987A (en) 1988-08-04 1991-07-16 Digital Equipment Corporation System with a plurality of hash tables each using different adaptive hashing functions
US5049881A (en) * 1990-06-18 1991-09-17 Intersecting Concepts, Inc. Apparatus and method for very high data rate-compression incorporating lossless data compression and expansion utilizing a hashing technique
US5371499A (en) 1992-02-28 1994-12-06 Intersecting Concepts, Inc. Data compression using hashing
JP2000286836A (ja) 1999-03-30 2000-10-13 Fujitsu Ltd 認証装置および記録媒体
EP1168174A1 (de) * 2000-06-19 2002-01-02 Hewlett-Packard Company, A Delaware Corporation Verfahren zur automatischen Datensicherung und -wiederherstellung
US6665813B1 (en) * 2000-08-03 2003-12-16 International Business Machines Corporation Method and apparatus for updateable flash memory design and recovery with minimal redundancy
FR2813743B1 (fr) * 2000-09-06 2003-01-03 Claude Seyrat Procede de compression/decompression de documents structures
US6826315B1 (en) * 2000-09-13 2004-11-30 Hewlett-Packard Development Company, L.P. Digital imaging device with image authentication capability
EP1233522A1 (de) * 2001-02-14 2002-08-21 Siemens Aktiengesellschaft Verfahren und Gerät zur Datenkompression/dekompression
US6728725B2 (en) 2001-05-08 2004-04-27 Eugene Garfield, Ph.D. Process for creating and displaying a publication historiograph
US7249255B2 (en) 2001-06-13 2007-07-24 Corrent Corporation Apparatus and method for a hash processing system using multiple hash storage areas
US20030162541A1 (en) * 2001-07-30 2003-08-28 Schwarzbauer Hans Juergen Method for supporting a number of checksum algorithms in a network node
US20040015600A1 (en) * 2002-02-21 2004-01-22 Ashutosh Tiwary Workload post-processing and parameterization for a system for performance testing of N-tiered computer systems using recording and playback of workloads
US7587408B2 (en) * 2002-03-21 2009-09-08 United States Postal Service Method and system for storing and retrieving data using hash-accessed multiple data stores
US7167980B2 (en) * 2002-05-30 2007-01-23 Intel Corporation Data comparison process
US6950517B2 (en) 2002-07-24 2005-09-27 Qualcomm, Inc. Efficient encryption and authentication for data processing systems
GB0305828D0 (en) 2003-03-14 2003-04-16 Ibm Real time xml data update identification
US7321659B2 (en) 2003-10-01 2008-01-22 International Business Machines Corporation Simple universal hash for plaintext aware encryption

Also Published As

Publication number Publication date
GB2413867B (en) 2007-07-25
NL1028971C2 (nl) 2006-08-14
GB2413867A (en) 2005-11-09
GB0509063D0 (en) 2005-06-08
EP1594252B1 (de) 2017-07-12
US20050268341A1 (en) 2005-12-01
US8977859B2 (en) 2015-03-10
EP1594252A3 (de) 2005-12-28
US20120041931A1 (en) 2012-02-16
NL1028971A1 (nl) 2005-11-07
EP1594252A2 (de) 2005-11-09
US9003194B2 (en) 2015-04-07

Similar Documents

Publication Publication Date Title
DE102005020881A1 (de) System und Verfahren zur Datenkomprimierung und Dekomprimierung
Chiesa et al. Marlin: Preprocessing zkSNARKs with universal and updatable SRS
Zhang et al. vSQL: Verifying arbitrary SQL queries over dynamic outsourced databases
CN105824720B (zh) 一种面向数据连续读取的重删纠删混合系统的数据放置方法
US20090319547A1 (en) Compression Using Hashes
Iwata et al. Improved analysis of highest-degree branching for feedback vertex set
US10148291B2 (en) Practical dynamic proofs of retrievability with multiple buffers
Babai et al. Polynomial-time isomorphism test for groups with no abelian normal subgroups
EP2940924A1 (de) PUF basierende Ableitung eines gerätespezifischen Wertes
Aronson et al. Towards an engineering approach to file carver construction
DE112019001438T5 (de) Kryptographisches asic mit kombinierten funktionen
Li et al. The inductive blockwise Alperin weight condition for PSLn (q) and PSUn (q) with cyclic outer automorphism groups
DE102020121075A1 (de) Einrichtung und Verfahren zur Authentifizierung von Software
Klimann The finiteness of a group generated by a 2-letter invertible-reversible Mealy automaton is decidable
EP3563261A1 (de) Bitsequenzbasiertes datenklassifikationssystem
Felgenhauer Deciding confluence of ground term rewrite systems in cubic time
Mansour et al. Wilf classification of subsets of four letter patterns
Xu et al. Quantifier elimination for a class of exponential polynomial formulas
Kosolobov Tight lower bounds for the longest common extension problem
Gruber et al. Provably shorter regular expressions from deterministic finite automata
DE102022102228A1 (de) Hashen mit unterschiedlicher hash-grösse und kompressionsgrösse
Fraigniaud et al. An optimal ancestry labeling scheme with applications to XML trees and universal posets
DE102022112400A1 (de) Vertrauenswürdige systeme zur dezentralisierten datenspeicherung
Terrier Recognition of poly-slender context-free languages by trellis automata
Luks Group isomorphism with fixed subnormal chains

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final