Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie verschlüssele und entschlüssele ich Daten in einer MySQL-Datenbank?

王林
Freigeben: 2023-07-12 16:28:40
Original
5749 Leute haben es durchsucht

Wie verschlüssele und entschlüssele ich Daten in einer MySQL-Datenbank?

Mit der kontinuierlichen Weiterentwicklung der Internettechnologie wird Datensicherheit immer wichtiger. In der MySQL-Datenbank müssen wir häufig sensible Daten verschlüsseln, um die Privatsphäre der Benutzer und die Datensicherheit zu schützen. In diesem Artikel wird anhand von Codebeispielen erläutert, wie Daten in einer MySQL-Datenbank verschlüsselt und entschlüsselt werden.

Verschlüsselungsmethode eins: Verschlüsseln mit dem AES-Algorithmus

Der AES-Algorithmus (Advanced Encryption Standard) ist ein symmetrischer Verschlüsselungsalgorithmus, der denselben Schlüssel zum Ver- und Entschlüsseln von Daten verwendet. Hier ist ein Beispiel für die Verschlüsselung und Entschlüsselung von Daten mit dem AES-Algorithmus:

  1. Erstellen Sie eine AES-Verschlüsselungsfunktion

    DELIMITER $$
    
    CREATE FUNCTION AES_ENCRYPT_STR(str TEXT, key_str TEXT) RETURNS TEXT
    BEGIN
     DECLARE encrypted_str TEXT;
     SELECT AES_ENCRYPT(str, key_str) INTO encrypted_str;
     RETURN encrypted_str;
    END$$
    
    DELIMITER ;
    Nach dem Login kopieren
  2. Erstellen Sie eine AES-Entschlüsselungsfunktion

    DELIMITER $$
    
    CREATE FUNCTION AES_DECRYPT_STR(str TEXT, key_str TEXT) RETURNS TEXT
    BEGIN
     DECLARE decrypted_str TEXT;
     SELECT AES_DECRYPT(str, key_str) INTO decrypted_str;
     RETURN decrypted_str;
    END$$
    
    DELIMITER ;
    Nach dem Login kopieren
  3. Verwenden Sie die AES-Verschlüsselungsfunktion, um Daten zu verschlüsseln

    INSERT INTO table_name (encrypted_data) VALUES (AES_ENCRYPT_STR('原始数据', '密钥'));
    Nach dem Login kopieren
  4. Verwenden Sie die AES-Entschlüsselungsfunktion, um die Daten zu entschlüsseln

    SELECT AES_DECRYPT_STR(encrypted_data, '密钥') FROM table_name;
    Nach dem Login kopieren

Verschlüsselungsmethode zwei: Verschlüsseln mit der SHA2-Funktion

Die SHA2-Funktion ist eine Einweg-Hash-Funktion, die Daten beliebiger Länge in eine Zeichenfolge fester Länge konvertieren kann. Mit der SHA2-Funktion können Daten verschlüsselt, jedoch nicht entschlüsselt werden. Das Folgende ist ein Beispiel für die Verwendung der SHA2-Funktion zum Verschlüsseln von Daten:

  1. Erstellen Sie eine SHA2-Verschlüsselungsfunktion

    DELIMITER $$
    
    CREATE FUNCTION SHA2_ENCRYPT_STR(str TEXT) RETURNS TEXT
    BEGIN
     DECLARE encrypted_str TEXT;
     SELECT SHA2(str, 256) INTO encrypted_str;
     RETURN encrypted_str;
    END$$
    
    DELIMITER ;
    Nach dem Login kopieren
  2. Verwenden Sie die SHA2-Verschlüsselungsfunktion zum Verschlüsseln von Daten

    INSERT INTO table_name (encrypted_data) VALUES (SHA2_ENCRYPT_STR('原始数据'));
    Nach dem Login kopieren

Verschlüsselungsmethode drei: Verschlüsseln mit dem RSA-Algorithmus Der

RSA-Algorithmus (Rivest-Shamir-Adleman) ist ein asymmetrischer Verschlüsselungsalgorithmus, der einen öffentlichen Schlüssel zum Verschlüsseln von Daten und einen privaten Schlüssel zum Entschlüsseln von Daten verwendet. Der RSA-Algorithmus wird hauptsächlich zur Verschlüsselung kleinerer Daten wie Passwörter und Schlüssel verwendet. Nachfolgend finden Sie ein Beispiel für die Verwendung des RSA-Algorithmus zum Verschlüsseln und Entschlüsseln von Daten:

  1. Zuerst müssen Sie ein Paar RSA-Schlüsselpaare (öffentlicher und privater Schlüssel) generieren.

    CREATE TABLE rsa_keys (
     id INT AUTO_INCREMENT PRIMARY KEY,
     public_key TEXT,
     private_key TEXT
    );
    Nach dem Login kopieren
  2. Generieren Sie das RSA-Schlüsselpaar und speichern Sie es zur Datenbank

    DELIMITER $$
    
    CREATE PROCEDURE generate_rsa_keys()
    BEGIN
     DECLARE public_key_text TEXT;
     DECLARE private_key_text TEXT;
     
     SET @private_key = 'temp.key';
     
     -- 生成RSA密钥对
     CALL mysql.rsa_generate_key_pair(2048);
     
     -- 保存公钥
     SELECT public_key INTO public_key_text FROM mysql.rsa_keys;
     INSERT INTO rsa_keys (public_key) VALUES (public_key_text);
     
     -- 保存私钥
     LOAD_FILE(@private_key) INTO private_key_text;
     UPDATE rsa_keys SET private_key = private_key_text WHERE id = LAST_INSERT_ID();
     
     -- 删除临时文件
     SET @delete_cmd = CONCACT('rm -f ', @private_key);
     PREPARE delete_stmt FROM @delete_cmd;
     EXECUTE delete_stmt;
     DEALLOCATE PREPARE delete_stmt;
     
     -- 显示公钥和私钥
     SELECT public_key_text AS public_key, private_key_text AS private_key;
    END$$
    
    DELIMITER ;
    Nach dem Login kopieren
  3. Daten mit dem öffentlichen RSA-Schlüssel verschlüsseln

    SET @public_key_text = (SELECT public_key FROM rsa_keys WHERE id = 1);
    SET @data_to_encrypt = '原始数据';
    SET @encrypted_data = RSA_ENCRYPT(@data_to_encrypt, @public_key_text);
    INSERT INTO table_name (encrypted_data) VALUES (@encrypted_data);
    Nach dem Login kopieren
  4. Daten mit dem privaten RSA-Schlüssel entschlüsseln

    SET @private_key_text = (SELECT private_key FROM rsa_keys WHERE id = 1);
    SELECT RSA_DECRYPT(encrypted_data, @private_key_text) AS decrypted_data FROM table_name;
    Nach dem Login kopieren

Zusammenfassung:

In diesem Artikel werden drei Methoden zum Ver- und Entschlüsseln von Daten in der MySQL-Datenbank erläutert: Verwenden Sie den AES-Algorithmus, die SHA2-Funktion und den RSA-Algorithmus. Diese Methoden können geeignete Verschlüsselungsalgorithmen basierend auf Datensicherheitsanforderungen auswählen. Durch den Einsatz dieser Methoden können wir die Datensicherheit besser schützen und so den Bedürfnissen der Nutzer nach Datenschutz gerecht werden.

Das obige ist der detaillierte Inhalt vonWie verschlüssele und entschlüssele ich Daten in einer MySQL-Datenbank?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage