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?

王林
Lepaskan: 2023-07-12 16:28:40
asal
5815 orang telah melayarinya

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 ;
    Salin selepas log masuk
  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 ;
    Salin selepas log masuk
  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('原始数据', '密钥'));
Salin selepas log masuk

  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;
    Salin selepas log masuk

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 ;
Salin selepas log masuk

  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('原始数据'));
    Salin selepas log masuk
  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
    );
    Salin selepas log masuk
  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 ;
    Salin selepas log masuk

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);
Salin selepas log masuk
🎜🎜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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan