it-swarm-eu.dev

Was sind die Unterschiede zwischen MD5, SHA und RSA?

MD5-Tools geben hexadezimale Werte aus. Erzeugen SHA und RSA zusammen eine hexadezimale (oder eine andere) Ausgabe?

Was sind die Unterschiede zwischen den Algorithmen MD5, SHA und RSA)?

43
Kars

Es ist nicht die Art der Ausgabe. Hex ist genau die Art und Weise, wie die Daten formatiert werden - da alle mit Binärdaten arbeiten, ist Hex sehr sinnvoll.

Der wichtige Teil ist, was sie tun und wie sie es tun:

  • MD5 und SHA sind Hash-Funktionen (SHA ist eigentlich eine Familie von Hash-Funktionen) - sie nehmen ein Datenelement, komprimieren es und erstellen eine entsprechend eindeutige Ausgabe, die mit einer anderen nur sehr schwer zu emulieren ist Daten. Sie verschlüsseln nichts - Sie können MD5 oder SHA) nicht ausgeben und "aufheben", um zu Ihrem Ausgangspunkt zurückzukehren. Der Unterschied zwischen den beiden liegt in was Algorithmus, den sie zum Erstellen des Hashs verwenden. Beachten Sie auch, dass MD5 jetzt fehlerhaft ist, da eine Möglichkeit entdeckt wurde, leicht Kollisionen zu generieren, und nicht mehr verwendet oder vertrauenswürdig sein sollte.

  • RSA ist ein assymetrischer Verschlüsselungsalgorithmus. Sie haben zwei Schlüssel (privat und öffentlich) und können eine Funktion mit einem Schlüssel (verschlüsseln oder entschlüsseln) ausführen und mit dem anderen Schlüssel umkehren. Welchen Schlüssel Sie verwenden, hängt davon ab, ob Sie versuchen, eine digitale Signatur oder eine Verschlüsselung durchzuführen.

57
bethlakshmi

MD5 ist eine kryptografische Hash-Funktion. "SHA" ist der Name für eine Familie von Hash-Funktionen. zuerst wurde ein kurzlebiger "SHA" umbenannt, der in "SHA-0" umbenannt wurde, dann wurde "SHA-1" definiert (ein Bestseller). Später wurden neue Familienmitglieder hinzugefügt, die gemeinsam als "SHA-2" bezeichnet wurden und aus SHA-224, SHA-256, SHA-384 und SHA-512 bestehen. Kürzlich wurde eine neue SHA Generation mit dem Namen "SHA-3", aber auch "Keccak" entworfen (dies war ein offener Wettbewerb, wobei Keccak der Codename eines der Kandidaten war, der letztendlich gewann).

Eine kryptografische Hash-Funktion ist eine vollständig definierte deterministische Funktion, die keinen geheimen Schlüssel verwendet. Als Eingabe wird eine Nachricht beliebiger Länge (ein Strom von Bits, any Bits) verwendet und eine Ausgabe mit fester Größe erzeugt. Die Ausgabegröße hängt von der Funktion ab. Es sind 128 Bit für MD5, 160 Bit für SHA-1, 256 Bit für SHA-256 ... Jeder kann eine bestimmte Hash-Funktion für einen bestimmten Eingang berechnen, und alle erhalten die gleichen Ergebnisse. Hash-Funktionen werden auch Digests genannt, weil sie irgendwie eine Art "Prüfsumme" oder "Zusammenfassung" der Eingabe erzeugen. Robuste Hash-Funktionen müssen so sein, dass niemand weiß, wie man sie "invertiert" oder sogar zwei unterschiedliche Eingaben findet, die dieselbe Ausgabe ergeben. Letzteres wird als Kollision bezeichnet und es ist eine mathematische Notwendigkeit, dass Kollisionen existieren (da die Funktion viel mehr unterschiedliche Eingaben akzeptieren kann als unterschiedliche Ausgaben erzeugen kann), aber wir verlangen, dass dies nicht möglich ist finde sogar eins Kollision.

MD5 erwies sich in Bezug auf Kollisionen als sehr defekt (wir können in wenigen Sekunden Arbeit auf einem PC eine Kollision erzeugen), und SHA-0 ist auch in dieser Hinsicht defekt. SHA-1 ist etwas schuppig; Der Rest der SHA -Familie scheint bisher robust zu sein. Wie eine Hash-Funktion Kollisionsresistenz erreicht, ist ein kleines Wunder, da die gesamte Funktion vollständig bekannt ist und keinen geheimen Wert hat. Die Daten werden einfach zu stark gemischt, als dass die besten Kryptografen den Prozess entschlüsseln könnten.

RSA besteht aus zwei Algorithmen: einem asymmetrische Verschlüsselung Algorithmus und einem digitale Signatur Algorithmus . Obwohl beide Algorithmen auf der gleichen Art von Mathematik aufbauen, sind sie ziemlich unterschiedlich (viele Leute beschreiben Signaturen als "Verschlüsselung mit dem privaten Schlüssel", was eine fehlerhafte Analogie und bestenfalls verwirrend ist, also tun Sie das nicht). Beide Algorithmen verwenden Schlüssel, d. H. Daten, die geheim gehalten werden müssen. Es kommt also vor, dass bei RSA-Signaturen nicht direkt eine bestimmte Nachricht (eine Folge von Bits) signiert wird, sondern ein Hash der Nachricht: Die Nachricht wird zuerst mit einer kryptografischen Hash-Funktion wie verarbeitet SHA-256, und der Hash-Wert wird dann verwendet. Dies geschieht auf diese Weise, da die Mathematik von RSA nur Werte mittlerer Größe verarbeiten kann, bestenfalls einige hundert Bit. Kryptografische Hash-Funktionen sind so, dass das Signieren des Hash genauso gut ist wie das Signieren der Originaldaten.

Auf diese Weise werden RSA- und kryptografische Hash-Funktionen häufig zusammen verwendet. aber sie sind überhaupt nicht dasselbe.

Hexadezimal ist eine Möglichkeit, eine Folge von Bits in eine Folge von Zeichen darzustellen: Hexadezimal verwendet Ziffern und Buchstaben von ' A 'bis' F '; Jedes Zeichen codiert genau vier Bits ('0' codiert '0000', '7' codiert '0111', 'D' codiert '1101' ...). Beliebig Die Folge von Bits (und insbesondere die Ausgabe einer Hash-Funktion) kann in hexadezimal und zurück konvertiert werden. Hexadezimal ist beliebt, weil menschliche Augen und Gehirn gut darin sind, Zeichen zu lesen und nicht Bits zu lesen. Befehlszeilentools, die kryptografische Hash-Funktionen für Dateien berechnen, geben aus diesem Grund traditionell hexadezimale Zeichen aus. Es gibt jedoch nichts, was Hash-Funktionen an sich mit Hexadezimal verknüpft: Alles, was auf die eine oder andere Weise in einen Computer passt, ist eine Folge von Bits und daher hexadezimal zugänglich. und eine Hash-Funktionsausgabe ist nur eine Folge von Bits, die auf verschiedene Arten codiert werden können, wobei hexadezimal nur die "traditionelle" Art ist (obwohl Base64 auch häufig vorkommt, insbesondere beim Umgang mit Datenbanken).

35
Thomas Pornin