Rumah >pangkalan data >tutorial mysql >Bagaimana untuk menyulitkan dan menyahsulit data dalam pangkalan data MySQL?

Bagaimana untuk menyulitkan dan menyahsulit data dalam pangkalan data MySQL?

王林
王林asal
2023-07-12 16:28:405801semak imbas

Bagaimana untuk menyulitkan dan menyahsulit data dalam pangkalan data MySQL?

Dengan perkembangan teknologi Internet yang berterusan, keselamatan data menjadi semakin penting. Dalam pangkalan data MySQL, kita selalunya perlu menyulitkan data sensitif untuk melindungi privasi pengguna dan keselamatan data. Artikel ini akan menerangkan cara menyulitkan dan menyahsulit data dalam pangkalan data MySQL, dengan contoh kod.

Kaedah penyulitan satu: Sulitkan menggunakan algoritma AES

Algoritma AES (Advanced Encryption Standard) ialah algoritma penyulitan simetri yang menggunakan kunci yang sama untuk menyulitkan dan menyahsulit data. Berikut ialah contoh menyulitkan dan menyahsulit data menggunakan algoritma AES:

  1. Buat fungsi penyulitan 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. Buat fungsi penyahsulitan 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. fungsi penyulitan semula

Gunakan fungsi data penyulitan AES untuk AES

Gunakan fungsi penyahsulitan AES untuk menyahsulit data

INSERT INTO table_name (encrypted_data) VALUES (AES_ENCRYPT_STR('原始数据', '密钥'));

  1. Kaedah penyulitan dua: Sulitkan menggunakan fungsi SHA2

    Fungsi SHA2 ialah fungsi cincang sehala yang boleh menukar data dari sebarang panjang kepada rentetan panjang tetap. Data boleh disulitkan menggunakan fungsi SHA2, tetapi tidak boleh dinyahsulit. Berikut ialah contoh penggunaan fungsi SHA2 untuk menyulitkan data:
  2. Cipta fungsi penyulitan SHA2
  3. SELECT AES_DECRYPT_STR(encrypted_data, '密钥') FROM table_name;

Gunakan fungsi penyulitan SHA2 untuk menyulitkan data

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 ;

  1. Sulit menggunakan kaedah tiga: Penyulitan RSA Algoritma

    RSA ( Rivest-Shamir-Adleman) ialah algoritma penyulitan asimetri yang menggunakan kunci awam untuk menyulitkan data dan kunci peribadi untuk menyahsulit data. Algoritma RSA digunakan terutamanya untuk menyulitkan data yang lebih kecil seperti kata laluan dan kunci. Di bawah ialah contoh menggunakan algoritma RSA untuk menyulitkan dan menyahsulit data:
  2. Pertama, anda perlu menjana sepasang pasangan kunci RSA (kunci awam dan peribadi)
  3. INSERT INTO table_name (encrypted_data) VALUES (SHA2_ENCRYPT_STR('原始数据'));
  4. Jana pasangan kunci RSA dan simpannya ke pangkalan data
  5. CREATE TABLE rsa_keys (
     id INT AUTO_INCREMENT PRIMARY KEY,
     public_key TEXT,
     private_key TEXT
    );
  6. Sulitkan data menggunakan kunci awam RSA
  7. 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 ;

Nyahsulit data menggunakan kunci persendirian 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);

🎜🎜Ringkasan:🎜🎜Artikel ini menerangkan tiga kaedah dan menyahsulit data dalam pangkalan data MySQL Gunakan algoritma AES, fungsi SHA2 dan algoritma RSA. Kaedah ini boleh memilih algoritma penyulitan yang sesuai berdasarkan keperluan keselamatan data. Dengan menggunakan kaedah ini, kami boleh melindungi keselamatan data dengan lebih baik dan dengan itu memenuhi keperluan pengguna untuk perlindungan privasi data. 🎜

Atas ialah kandungan terperinci Bagaimana untuk menyulitkan dan menyahsulit data dalam pangkalan data MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn