2010-07-23 2 views
6

Langzeitleser, Poster zum ersten Mal. Und ich fange mit einem ziemlich kryptischen an!Kann MySQL (Windows) SHA-256 und HMAC-Hashing durchführen?

Was ich tun möchte, ist eine Zeichenfolge mit dem SHA-256-Algorithmus zu verschlüsseln, und hash es mit einem Schlüssel.

Ich entdeckte, jemand hatte einige ausgezeichnete Arbeit bei der Erstellung eines Algorithmus für "normale" SHA-2-Verschlüsselung als gespeicherte Funktion bei: http://blog.darkrainfall.org/sha-256-in-mysql/ gemacht, die wahrscheinlich für andere hilfreich sein wird, aber ich muss in der Lage sein, damit zu tun ein Schlüssel.

Wer weiß, ob das möglich ist? Ich bin ein völlig Neuling für Verschlüsselung, fürchte ich.

Ich benutze mySQL 5.1 auf Windows 2003 Server.

Prost.

Antwort

1

Es ist ein wenig unklar, was Ihr Endziel ist, aber die von Ihnen referenzierte SHA-Implementierung sollte in der Lage sein, das von Ihnen gewünschte Hashing durchzuführen. Eine Bedeutung von "Hashing etwas mit einem Schlüssel" für die Nachrichtenauthentifizierung könnte sein, dass Sie einen geheimen Schlüssel nehmen und ihn den Daten voranstellen und dann das gesamte Ergebnis hashen. Die immer nützliche Wikipedia hat einige Informationen zu HMAC.

Beachten Sie, dass das Hashing keine Verschlüsselung ist. Die Frage scheint zu implizieren, dass Hashing das Gleiche ist wie das Verschlüsseln. Ein Hash nimmt jedoch einige Daten und führt sie durch einen Datenmischer und erzeugt einen (typischerweise) festen Längenabschnitt von Daten. Mit einer kryptographisch starken Hash-Funktion soll es (aus praktischer Sicht) unmöglich sein, eine Eingabe zu finden, die zu einem bestimmten Hash-Wert führt. Die Verschlüsselung hingegen nimmt einen Schlüssel und einen Datenblock und führt i durch einen Datenmischer und erzeugt einen Datenblock, der dann in Verbindung mit dem ursprünglichen Schlüssel "unblended" werden kann, um die ursprünglichen Daten zu erzeugen.

+0

Nur eine Anmerkung. Hashing mit einem Schlüssel bedeutet * not * bedeutet notwendigerweise, dass das Hashable mit dem Schlüssel vorangestellt wird. In der Regel beinhaltet gesalzen Hashing das Vorbereiten der Hash mit dem Salz. HMAC ist eine Funktion, die als Argumente einen Hashalgorithmus und einen Schlüssel verwendet und einen neuen Hashalgorithmus zurückgibt. Dieser neue Hashalgorithmus wird das Hashable mit dem Schlüssel über einen komplexeren und sichereren Mechanismus transformieren. – yfeldblum

+0

@Justice - Das ist wahr. Ich vereinfachte mit einem möglichen Szenario. Ich werde versuchen, es zu aktualisieren, um genauer zu sein. –

+0

Wow, das war schnell. Sorry, ich habe mich gefragt, ob ich klar bin und du mich richtig gestellt hast! Ich möchte so etwas wie dies in einer SQL-Anweisung in der Lage sein zu tun: SELECT hash_hmac ('sha256', '$ variable', '$ key') als hashed_response Ich weiß, dass ich das tun kann, mit sha256 die gespeicherte Funktion, die ich erwähnt habe, aber ich fragte mich, wie ich es vielleicht auf HMAC ausdehnen könnte. Obwohl das, was Sie oben gesagt haben, das Skript, obwohl es die richtige Verschlüsselung teilt, ein Nicht-Starter für das ist, was ich versuche zu tun. Ich habe nur für 24 Stunden daran gearbeitet, also sei sanft mit mir! – Dave