Maison  >  Article  >  base de données  >  Comment crypter et déchiffrer les données dans la base de données MySQL ?

Comment crypter et déchiffrer les données dans la base de données MySQL ?

王林
王林original
2023-07-12 16:28:405752parcourir

Comment crypter et déchiffrer les données dans la base de données MySQL ?

Avec le développement continu de la technologie Internet, la sécurité des données est devenue de plus en plus importante. Dans la base de données MySQL, nous devons souvent chiffrer des données sensibles pour protéger la confidentialité des utilisateurs et la sécurité des données. Cet article explique comment chiffrer et déchiffrer les données dans une base de données MySQL, avec des exemples de code.

Première méthode de cryptage : crypter à l'aide de l'algorithme AES

L'algorithme AES (Advanced Encryption Standard) est un algorithme de cryptage symétrique qui utilise la même clé pour crypter et déchiffrer les données. Voici un exemple de cryptage et de décryptage de données à l'aide de l'algorithme AES :

  1. Créez une fonction de cryptage AES

    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 ;
  2. Créez une fonction de décryptage AES

    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 ;
  3. Utilisez la fonction de cryptage AES pour crypter les données

    INSERT INTO table_name (encrypted_data) VALUES (AES_ENCRYPT_STR('原始数据', '密钥'));
  4. Utilisez la fonction de décryptage AES pour décrypter les données

    SELECT AES_DECRYPT_STR(encrypted_data, '密钥') FROM table_name;

Méthode de cryptage 2 : Chiffrer à l'aide de la fonction SHA2

La fonction SHA2 est une fonction de hachage unidirectionnelle qui peut convertir des données de n'importe quelle longueur en une chaîne de longueur fixe. Les données peuvent être cryptées à l'aide de la fonction SHA2, mais ne peuvent pas être déchiffrées. Voici un exemple d'utilisation de la fonction SHA2 pour chiffrer des données :

  1. Créez une fonction de chiffrement SHA2

    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 ;
  2. Utilisez la fonction de chiffrement SHA2 pour chiffrer les données

    INSERT INTO table_name (encrypted_data) VALUES (SHA2_ENCRYPT_STR('原始数据'));

Troisième méthode de chiffrement : Chiffrer à l'aide de l'algorithme RSA

L'algorithme RSA (Rivest-Shamir-Adleman) est un algorithme de cryptage asymétrique qui utilise une clé publique pour crypter les données et une clé privée pour déchiffrer les données. L'algorithme RSA est principalement utilisé pour chiffrer des données plus petites telles que des mots de passe et des clés. Vous trouverez ci-dessous un exemple d'utilisation de l'algorithme RSA pour crypter et déchiffrer des données :

  1. Tout d'abord, vous devez générer une paire de paires de clés RSA (clés publiques et privées)

    CREATE TABLE rsa_keys (
     id INT AUTO_INCREMENT PRIMARY KEY,
     public_key TEXT,
     private_key TEXT
    );
  2. Générez la paire de clés RSA et enregistrez-la à la base de données

    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 ;
  3. Crypter les données à l'aide de la clé publique RSA

    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);
  4. Déchiffrer les données à l'aide de la clé privée RSA

    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;

Résumé :

Cet article explique trois méthodes pour crypter et déchiffrer les données dans la base de données MySQL : Utilisez l'algorithme AES, la fonction SHA2 et l'algorithme RSA. Ces méthodes peuvent sélectionner des algorithmes de chiffrement appropriés en fonction des exigences de sécurité des données. En utilisant ces méthodes, nous pouvons mieux protéger la sécurité des données et ainsi répondre aux besoins des utilisateurs en matière de protection de la confidentialité des données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn