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?
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:
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 ;
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 ;
Gunakan fungsi data penyulitan AES untuk AES
Gunakan fungsi penyahsulitan AES untuk menyahsulit dataINSERT INTO table_name (encrypted_data) VALUES (AES_ENCRYPT_STR('原始数据', '密钥'));
SELECT AES_DECRYPT_STR(encrypted_data, '密钥') FROM table_name;
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 ;
INSERT INTO table_name (encrypted_data) VALUES (SHA2_ENCRYPT_STR('原始数据'));
CREATE TABLE rsa_keys ( id INT AUTO_INCREMENT PRIMARY KEY, public_key TEXT, private_key TEXT );
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 ;
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!