Frage:
Was sind die Unterschiede zwischen MD5, SHA und RSA?
Kars
2011-02-25 20:46:15 UTC
view on stackexchange narkive permalink

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

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

Hex ist nur die herkömmliche Methode, um die Ergebnisse dieser Algorithmen anzuzeigen. Sie können genauso gut als binär oder dezimal angezeigt werden.
Zwei antworten:
#1
+58
bethlakshmi
2011-02-25 21:13:04 UTC
view on stackexchange narkive permalink

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 einem anderen Datenelement nur sehr schwer zu emulieren ist. Sie verschlüsseln nichts - Sie können keine MD5- oder SHA-Ausgabe nehmen und sie "aufheben", um zu Ihrem Ausgangspunkt zurückzukehren. Der Unterschied zwischen den beiden liegt darin, welchen Algorithmus sie zum Erstellen des Hashs verwenden. Beachten Sie auch, dass MD5 jetzt defekt ist, da festgestellt wurde, dass Kollisionen leicht erzeugt werden können und nicht mehr verwendet oder vertrauenswürdig sind.

  • 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.

Ist RSA nicht auch ein Signaturalgorithmus?
#2
+35
Thomas Pornin
2013-02-03 21:55:03 UTC
view on stackexchange narkive permalink

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 namens "SHA-3", aber auch "Keccak" entwickelt (dies war ein offener Wettbewerb, wobei Keccak der Codename eines der Kandidaten war, der letztendlich gewann).

A. Die 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 Bitstrom, beliebige 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 als Digests bezeichnet, da 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 fordern, dass es nicht möglich ist, gerade zu finden eine Kollision.

MD5 erwies sich in Bezug auf Kollisionen als sehr kaputt (wir können eine Kollision in wenigen Sekunden Arbeit auf einem PC erzeugen) und SHA-0 auch in dieser Hinsicht gebrochen; 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 nur zu stark gemischt, als dass die besten Kryptografen den Prozess entschlüsseln könnten.

RSA besteht aus zwei Algorithmen: einem asymmetrischen Verschlüsselungsalgorithmus und einem digitalen 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 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 SHA- verarbeitet. 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' ...). Jede 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 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).



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 2.0-Lizenz, unter der er vertrieben wird.
Loading...