Mehrere Möglichkeiten zum Verschlüsseln und Entschlüsseln von MySQL (Zusammenfassung)

Mehrere Möglichkeiten zum Verschlüsseln und Entschlüsseln von MySQL (Zusammenfassung)

Vorne geschrieben

Ich bin zuvor auf ein Problem gestoßen, nämlich die Verschlüsselung von MySQL-Informationen. Tatsächlich gibt es zwei Möglichkeiten, Daten zu verschlüsseln. Eine besteht darin, Daten außerhalb der Datenbank zu verschlüsseln und sie dann in der Datenbank zu speichern. Die zweite besteht darin, Daten innerhalb der Datenbank zu verschlüsseln. Der Unterschied zwischen beiden besteht darin, dass die zweite bequemer zu verwenden ist als die erste, denn wenn sie extern verschlüsselt ist, müssen Sie bei jeder Suche, die auf dem verschlüsselten Element basiert, zuerst die verschlüsselten Daten berechnen und sie dann in SQL einfügen. Die zurückgegebenen Daten sind ebenfalls verschlüsselte Daten, die extern entschlüsselt werden müssen. Bei der zweiten können der Originalwert und der verschlüsselte Schlüssel direkt in SQL übergeben werden und die Entschlüsselung kann auch in SQL abgeschlossen werden. Dadurch ist es nicht möglich, einige kombinierte SQL-Abfragen mit der ersten Methode abzuschließen, z. B. wenn das Abfragefeld das Ergebnis einer anderen Abfrage ist, da es einen externen Verschlüsselungsprozess durchlaufen muss.

Zwei-Wege-Verschlüsselung

Es gibt drei Methoden der bidirektionalen Verschlüsselung:

CODIEREN/DEKODIEREN

Es werden zwei Werte übergeben, einer ist der zu verschlüsselnde Datensatz und der andere der Verschlüsselungs- und Entschlüsselungsschlüssel. Die Länge des Binärzeichens nach der Verschlüsselung entspricht der ursprünglichen Länge und wird im Blob-Typ gespeichert

Felder vom Typ BLOB werden zum Speichern binärer Daten verwendet. In MySQL ist BLOB eine Typenreihe, die Folgendes umfasst: TinyBlob, Blob, MediumBlob, LongBlob. Der einzige Unterschied zwischen diesen Typen ist die maximale Größe der gespeicherten Datei. Vier MySQL BLOB-Typen. Typ Größe (Einheit: Bytes). TinyBlob maximal 255. Blob maximal 65 K. Mittel.

Verschlüsselung:

SELECT ENCODE('meinText','meinSchlüsselwort');

Ergebnis:

mysql> SELECT ENCODE('meinText','meinSchlüsselwort');
+--------------------------------+
| ENCODE('meinText','meinSchlüsselwort') |
+--------------------------------+
| ">¿¡È | 
+--------------------------------+
1 Zeile im Satz (0,00 Sek.)

Entschlüsselung:

SELECT DECODE(ENCODE('meinText','meinSchlüsselwort'),'meinSchlüsselwort');

Ergebnis:

mysql> SELECT DECODE(ENCODE('meinText','meinSchlüsselwort'),'meinSchlüsselwort');
+------------------------------------------------------+
| DECODE(ENCODE('meinText','meinSchlüsselwort'),'meinSchlüsselwort') |
+------------------------------------------------------+
| mein Text | 
+------------------------------------------------------+
1 Zeile im Satz (0,00 Sek.)

AES_ENCRYPT/AES_DECRYPT

Dieser Verschlüsselungsalgorithmus verwendet AES (Advanced Encryption Standard) und key_str-Verschlüsselung. Die Länge von key_str kann 256 Bit erreichen. Das verschlüsselte Ergebnis ist eine im Blob-Typ gespeicherte Binärzeichenfolge.

Verschlüsselung:

SELECT AES_ENCRYPT('meinText', 'meinSchlüsselstring');

Ergebnis:

mysql> SELECT AES_ENCRYPT('meinText', 'meinSchlüsselstring');
+--------------------------------------+
| AES_ENCRYPT('meinText', 'meinSchlüsselstring') |
+--------------------------------------+
| •› ¨í ƒðb áÒ9•j | 
+--------------------------------------+
1 Zeile im Satz (0,00 Sek.)

Entschlüsselung:

Wählen Sie AES_DECRYPT (AES_ENCRYPT ('meinText', 'meinSchlüsselzeichenfolge'), 'meinSchlüsselzeichenfolge');

DES_ENCRYPT/DES_DECRYPT

Diese Verschlüsselungsmethode verwendet 3DES (Triple Encryption Data Algorithm, was bedeutet, dass es eine Lücke in der Verschlüsselungsebene gibt). Sie können beim Verschlüsseln zwischen key_num und key_str wählen.

Zum Beispiel:

SELECT DES_ENCRYPT('meinText',5),DES_ENCRYPT('meinText','meinPasswort');

Die Ausgabe ist:

mysql> SELECT DES_ENCRYPT('meinText',5),DES_ENCRYPT('meinText','meinPasswort');
+-------------------------+------------------------------------+
| DES_ENCRYPT('meinText',5) | DES_ENCRYPT('meinText','meinPasswort') |
+-------------------------+------------------------------------+
| … ÿc}æ¤~ | ÿ ]ï×ñ”Å | 
+-------------------------+------------------------------------+
1 Zeile im Satz (0,00 Sek.)

Verwenden Sie DES_DECRYPT beim Entschlüsseln

Allerdings gibt es in w3resource einen Satz: Diese Funktion funktioniert nur mit Secure Sockets Layer (SSL), wenn in der MySql-Konfiguration SSL-Unterstützung verfügbar ist. Mein persönliches Verständnis ist, dass Sie bei Verwendung dieser Verschlüsselungsmethode eine sichere SSL-Verbindung verwenden müssen, um eine Verbindung zur Datenbank herzustellen, da sonst die höhere Verschlüsselungsstufe verschwendet wird.

Einweg-Verschlüsselung

Tatsächlich gab es im Internet schon immer eine Debatte darüber, ob Einwegverschlüsselung tatsächlich Verschlüsselung ist, oder ob es sich beispielsweise um MD5-Verschlüsselung handelt. , ich werde es hier als Verschlüsselungsalgorithmus behandeln, kein Grund zu streiten

MD5-Verschlüsselung

Das Ergebnis der MD5-Verschlüsselung ist eine 32-Bit hexadezimale Binärzeichenfolge.

Wählen Sie MD5('w3resource');

Das Ergebnis ist:

mysql> SELECT MD5('w3resource'); 
+----------------------------------+
| MD5('w3Ressource') |
+----------------------------------+
| b273cb2263eb88f61f7133cd308b4064 | 
+----------------------------------+
1 Zeile im Satz (0,04 Sek.)

VERSCHLÜSSELN

ENCRYPT wird mithilfe des Unix-Systemaufrufs crypt() implementiert, der eine Binärzeichenfolge zurückgibt. Da es auf Unix-Systemaufrufen basiert, wird unter Windows NULL zurückgegeben.

Verschlüsselung:

SELECT ENCRYPT('w3resource', 'kodieren');

mysql> SELECT ENCRYPT('w3resource', 'kodieren');
+---------------------------------+
| VERSCHLÜSSELN('w3resource', 'kodieren') |
+---------------------------------+
| NULL | 
+---------------------------------+
1 Zeile im Satz (0,00 Sek.)

SHA1-Verschlüsselung

SHA1 gibt eine Binärzeichenfolge mit 40 Hexadezimalziffern zurück. Wenn die Eingabe NULL ist, ist auch die Ausgabe NULL.

Wählen Sie SHA1('w3resource');
mysql> SELECT SHA1('w3resource');
+------------------------------------------+
| SHA1('w3resource') |
+------------------------------------------+
|d228359c41174cede6b3c401eb8d11746a4ad1eb | 
+------------------------------------------+
1 Zeile im Satz (0,00 Sek.)

PASSWORT

Dies wird im Allgemeinen zum Verschlüsseln von Passwörtern verwendet.

Wenn die Eingabe NULL ist, ist auch die Ausgabe NULL

mysql> PASSWORT AUSWÄHLEN('w3resource');
+----------------------------------------------+
| PASSWORT('w3resource') |
+----------------------------------------------+
| *EE0804DDC2CC3E85A47191ECCCBA29B775DFFA77 | 
+----------------------------------------------+
1 Zeile im Satz (0,00 Sek.)

Referenz
https://www.w3resource.com/mysql/encryption-and-compression-functions/decode().php
https://blog.csdn.net/Gpwner/article/details/51598344?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

Damit ist dieser Artikel über verschiedene Möglichkeiten zur MySQL-Verschlüsselung und -Entschlüsselung abgeschlossen (Zusammenfassung). Weitere Informationen zur MySQL-Verschlüsselung und -Entschlüsselung finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung der Verwendung der MySQL-Zweiwege-Verschlüsselung und -Entschlüsselung

<<:  Implementierungscode für die adaptive IFrame-Größe

>>:  CSS3 ändert den Bildlaufleistenstil des Browsers

Artikel empfehlen

So entschlüsseln Sie Linux-Versionsinformationen

Das Anzeigen und Interpretieren von Informationen...

So implementieren Sie das parallele Herunterladen großer Dateien in JavaScript

Inhaltsverzeichnis 1. HTTP-Bereichsanforderung 1....

Bringen Sie Ihnen bei, wie Sie wartbaren JS-Code schreiben

Inhaltsverzeichnis Was ist wartbarer Code? Code-K...

Kostenloses Tool zur Überprüfung der Richtigkeit von HTML-, CSS- und RSS-Feeds

Ein Trick zum Umgang mit dieser Art von Fehlern be...

Implementierung der CSS-Bildlaufleisten-Stileinstellungen

WebKit-Bildlaufleistenstil zurücksetzen 1. Die Bi...

So verwenden Sie Nginx als Load Balancer für MySQL

Hinweis: Die Nginx-Version muss 1.9 oder höher se...

So beheben Sie den abnormalen Fehler ERROR: 2002 in MySQL

Kürzlich ist beim Starten von MySQL ein Fehler au...

Zusammenfassung von fünf Befehlen zum Überprüfen des Swap-Speichers in Linux

Vorwort Unter Linux können zwei Arten von Swap-Sp...

Zusammenfassung häufiger Probleme und Lösungen in Vue (empfohlen)

Es gibt einige Probleme, die nicht auf Vue beschr...