MySQL 데이터베이스의 데이터를 암호화하고 해독하는 방법은 무엇입니까?
인터넷 기술이 지속적으로 발전하면서 데이터 보안이 더욱 중요해졌습니다. MySQL 데이터베이스에서는 사용자 개인 정보 보호 및 데이터 보안을 보호하기 위해 중요한 데이터를 암호화해야 하는 경우가 많습니다. 이 문서에서는 코드 예제를 통해 MySQL 데이터베이스의 데이터를 암호화하고 해독하는 방법을 설명합니다.
암호화 방법 1: AES 알고리즘을 사용하여 암호화
AES(Advanced Encryption Standard) 알고리즘은 동일한 키를 사용하여 데이터를 암호화하고 복호화하는 대칭 암호화 알고리즘입니다. 다음은 AES 알고리즘을 사용하여 데이터를 암호화하고 해독하는 예입니다.
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 ;
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 ;
AES 암호화 기능을 사용하여 데이터 암호화
INSERT INTO table_name (encrypted_data) VALUES (AES_ENCRYPT_STR('原始数据', '密钥'));
AES 복호화 기능을 사용하여 데이터를 복호화하세요
SELECT AES_DECRYPT_STR(encrypted_data, '密钥') FROM table_name;
암호화 방법 2: SHA2 기능을 사용하여 암호화
SHA2 기능은 모든 길이의 데이터를 고정 길이 문자열로 변환할 수 있는 단방향 해시 기능입니다. SHA2 기능을 사용하여 데이터를 암호화할 수 있지만 해독할 수는 없습니다. 다음은 SHA2 기능을 사용하여 데이터를 암호화하는 예입니다.
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 ;
SHA2 암호화 기능을 사용하여 데이터 암호화
INSERT INTO table_name (encrypted_data) VALUES (SHA2_ENCRYPT_STR('原始数据'));
암호화 방법 3: RSA 알고리즘을 사용하여 암호화
RSA(Rivest-Shamir-Adleman) 알고리즘은 공개 키를 사용하여 데이터를 암호화하고 개인 키를 사용하여 데이터를 해독하는 비대칭 암호화 알고리즘입니다. RSA 알고리즘은 주로 비밀번호, 키와 같은 소규모 데이터를 암호화하는 데 사용됩니다. 다음은 RSA 알고리즘을 사용하여 데이터를 암호화하고 해독하는 예입니다.
먼저 RSA 키 쌍(공개 및 개인 키) 쌍을 생성해야 합니다.
CREATE TABLE rsa_keys ( id INT AUTO_INCREMENT PRIMARY KEY, public_key TEXT, private_key TEXT );
RSA 키 쌍을 생성하고 저장합니다.
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);
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;
위 내용은 MySQL 데이터베이스에서 데이터를 암호화하고 해독하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!