Wie entschlüsselt man einen mit HMACSHA1 verschlüsselten String?

8

Ich bin ein Verschlüsselungs-Neuling, der versucht, einige Werte zwischen Systemen hin- und herzuübertragen. Ich kann den Wert verschlüsseln, aber ich kann nicht herausfinden, wie ich am anderen Ende entschlüsseln kann. Ich habe eine einfache Windows Forms-Anwendung mit VB.NET erstellt. Versuchen Sie, einen Wert und einen Schlüssel einzugeben, zu verschlüsseln und dann zu entschlüsseln, um den ursprünglichen Wert zu erhalten. Hier ist mein Code soweit. Jede Hilfe sehr geschätzt. Danke.

%Vor%     
Ilmari Karonen 12.03.2010, 16:31
quelle

3 Antworten

16

HMAC-SHA1 ist ein einseitiger Hash , kein bidirektionaler Verschlüsselung -Algorithmus. Sie können es nicht entschlüsseln. Ich habe keine Zeit, hier einen vollständigen Verschlüsselungscode anzugeben - es ist ein kompliziertes Thema, aber Barry Dorrans " ASP.NET Security starten " würde Ihnen einen guten Startpunkt geben. (Nur ein Teil davon ist ASP.NET-spezifisch.) Sie können auch seine DDD spricht über das Thema.

    
Jon Skeet 12.03.2010, 16:34
quelle
21

Nur um Jons Antwort zu erweitern, weil Sie sich wahrscheinlich fragen, was es heißt, etwas zu verschlüsseln, das Sie nicht entschlüsseln können - HMAC-SHA1 ist, wie Jon sagte, ein Hash. Die erzeugte Zeichenfolge enthält nicht die ursprüngliche Information, auch nicht in verschlüsselter Form ... Es ist nur eine Sequenz von Bytes.

Das Schöne am Hash ist jedoch, dass jede Art von Änderung, die Sie in der Zeichenfolge vornehmen, höchstwahrscheinlich zu einer Änderung des Hash-Ergebnisses führt, und das Hash-Ergebnis ist tendenziell eher gering. Aus diesem Grund werden häufig Hashs verwendet, um sicherzustellen, dass eine Information nicht manipuliert wurde.

Zum Beispiel

Ich möchte Jon hier eine Nachricht schicken - und ich möchte, dass er zuversichtlich ist, dass einer seiner Freunde die Nachricht nicht geändert hat, bevor er sie gelesen hat. Ich kann nicht einfach den Hash meiner Nachricht nehmen und diesen mitschicken, denn alles, was ein Problemverursacher tun müsste, wäre, die Nachricht durch eine eigene zu ersetzen und einen passenden Hash bereitzustellen ...

Wenn ich jedoch meine Nachricht mit einem Hash nicht der Nachricht selbst, sondern eher mit der Nachricht mit einigen spezifischen zusätzlichen Bytes versehe, die John und ich im Voraus vereinbart haben, ist der Unruhehersteller besiegt. Jon weiß, dass er die zusätzlichen Bytes hinzufügen muss (allgemein bekannt als das Salzen des Hash), bevor er meine Nachricht hasht, aber der Problemverursacher nicht - wenn er also die Nachricht ändert, obwohl er seinen eigenen Hash ausarbeitet, kann Jon das sehen ist nicht in Ordnung ...

Encyryption / Hashes sind ein findiges Geschäft, und ich habe kaum selbst an der Oberfläche gekratzt - aber ich dachte, dies könnte Ihnen ein einfaches Beispiel dafür geben, wofür Hashes verwendet werden ...

Eine weitere sehr häufige Verwendung ist die Pflege von Informationen zur Site-Mitgliedschaft - die Leute speichern nicht das Passwort, sondern den Hash des Passworts. Dies bedeutet, dass selbst wenn es jemandem gelingt, Ihre Benutzerdaten zu erhalten, sie nicht in der Lage sind, sich in Ihr System einzuloggen.

Martin

    
Martin Milan 12.03.2010 16:47
quelle
2

Eine einfache Einweg-Hash-Erklärung, warum Menschen es tun möchten.

Nehmen wir an, Sie haben ein Benutzerkonto mit dem Benutzernamen John und dem Passwort Doe. Sie speichern den Hash der folgenden Zeichenfolge.

Vorname, Ihre Lieblingsnummer und das ausgewählte Passwort

zum Beispiel: hash = myHash ("john7 @ password")

%Vor%

Nun, dieser Hash ist sicher und kann nicht umgekehrt werden, um herauszufinden, was Ihre Lieblingsnummer in den meisten Fällen ist. Um zu überprüfen, ob der Hash der richtige für die Anmeldung ist, würden Sie die angegebene Eingabe erneut hashen (Name, Ihre Nummer oder w / e, Passwort) und wenn Sie den gleichen Hash erhalten, ist dies ein gültiger Deal. wo ist es nicht ganz einfach!

- Sollte ich denselben Schlüssel verwenden, um meine Daten erneut zu hashen?

    
sean 15.01.2011 16:03
quelle

Tags und Links