Frage

Ich möchte eine kryptografisch sichere Zeichenfolge zum Zurücksetzen des Passworts in MySQL generieren.Ich weiß, dass ich dies auf Anwendungsebene in PHP tun könnte;Dafür ist jedoch die OpenSSL-Erweiterung erforderlich, die viele meiner Kunden möglicherweise nicht haben.

Wenn ich es in MySQL 5 auf sichere und allgemein verfügbare Weise tun könnte, wäre das ideal.Ist das möglich?

Notiz:Dies dient der Generierung eines sicheren Tokens zum Zurücksetzen des Passworts.Es hat nichts mit einer sicheren Verbindung zu tun, daher ist die Verwendung von https keine Lösung.

War es hilfreich?

Lösung

Da sind viele Verschlüsselung Methoden, die in MySQL verfügbar sind.

Wenn Sie eine Zwei-Wege-Verschlüsselung benötigen, können Sie diese verwenden aes_encrypt welches das dazugehörige hat aes_decrypt

Wenn Sie nur einen sicheren Hash benötigen, können Sie ihn verwenden sha2

Die folgende Anweisung könnte zu einem ähnlichen Ergebnis führen openssl_random_pseudo_bytes

SELECT HEX(SHA2(CONCAT(NOW(), RAND(), UUID()), 512));

Die obige Aussage gilt NOW() und verkettet es mit RAND() und ein UUID(), führt dann ein 512-Bit aus SHA2() Verschlüsselung des Ergebnisses und konvertiert es dann in HEX()

Andere Tipps

Dies ist MySQLs Zufallszahlengenerator:

generasacodicetagpre.

Sie müssen einen großen Zufallswert von außen weitergeben.Sagen Sie, dass Sie eine 512-Bit-Zufallszahl benötigen, die eindeutig ist.Dies kann ausreichen:

generasacodicetagpre.

sagen, dass Gibberish512 ein ARG zu einer gespeicherten Prozedur ist, die Rand auf viele Werte anruft, alle innerhalb einiger Millisekunden, und ein Zeitstempel gibt, wenn das war.MySQL Rand () hat weniger als 64 Bit von der Entropie allein.ein zufälliges Argument von außen übergeben (erzeugt aus zufälligen Tippen, Würfelrollen oder einem ordnungsgemäßen Kryptorandom PRNG usw.).

BEGIN

declare r tinytext;
declare s tinytext default '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
declare n int;

set r='';

while length(r)<=16 do
    set n=rand() * 61;
    set r=concat(r,substr(s,n,1));
end while;

select r;

END
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit dba.stackexchange
scroll top