>데이터 베이스 >MySQL 튜토리얼 >MySQL 데이터베이스에서 데이터를 암호화하고 해독하는 방법은 무엇입니까?

MySQL 데이터베이스에서 데이터를 암호화하고 해독하는 방법은 무엇입니까?

王林
王林원래의
2023-07-12 16:28:405802검색

MySQL 데이터베이스의 데이터를 암호화하고 해독하는 방법은 무엇입니까?

인터넷 기술이 지속적으로 발전하면서 데이터 보안이 더욱 중요해졌습니다. MySQL 데이터베이스에서는 사용자 개인 정보 보호 및 데이터 보안을 보호하기 위해 중요한 데이터를 암호화해야 하는 경우가 많습니다. 이 문서에서는 코드 예제를 통해 MySQL 데이터베이스의 데이터를 암호화하고 해독하는 방법을 설명합니다.

암호화 방법 1: AES 알고리즘을 사용하여 암호화

AES(Advanced Encryption Standard) 알고리즘은 동일한 키를 사용하여 데이터를 암호화하고 복호화하는 대칭 암호화 알고리즘입니다. 다음은 AES 알고리즘을 사용하여 데이터를 암호화하고 해독하는 예입니다.

  1. 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. 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. AES 암호화 기능을 사용하여 데이터 암호화

    INSERT INTO table_name (encrypted_data) VALUES (AES_ENCRYPT_STR('原始数据', '密钥'));
  4. AES 복호화 기능을 사용하여 데이터를 복호화하세요

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

암호화 방법 2: SHA2 기능을 사용하여 암호화

SHA2 기능은 모든 길이의 데이터를 고정 길이 문자열로 변환할 수 있는 단방향 해시 기능입니다. SHA2 기능을 사용하여 데이터를 암호화할 수 있지만 해독할 수는 없습니다. 다음은 SHA2 기능을 사용하여 데이터를 암호화하는 예입니다.

  1. 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. SHA2 암호화 기능을 사용하여 데이터 암호화

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

암호화 방법 3: RSA 알고리즘을 사용하여 암호화

RSA(Rivest-Shamir-Adleman) 알고리즘은 공개 키를 사용하여 데이터를 암호화하고 개인 키를 사용하여 데이터를 해독하는 비대칭 암호화 알고리즘입니다. RSA 알고리즘은 주로 비밀번호, 키와 같은 소규모 데이터를 암호화하는 데 사용됩니다. 다음은 RSA 알고리즘을 사용하여 데이터를 암호화하고 해독하는 예입니다.

  1. 먼저 RSA 키 쌍(공개 및 개인 키) 쌍을 생성해야 합니다.

    CREATE TABLE rsa_keys (
     id INT AUTO_INCREMENT PRIMARY KEY,
     public_key TEXT,
     private_key TEXT
    );
  2. 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 ;

  3. 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. 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;

요약:

이 문서에서는 MySQL 데이터베이스의 데이터를 암호화하고 해독하는 세 가지 방법을 설명합니다. AES 알고리즘, SHA2 기능 및 RSA 알고리즘을 사용하십시오. 이러한 방법은 데이터 보안 요구 사항에 따라 적절한 암호화 알고리즘을 선택할 수 있습니다. 이러한 방법을 사용함으로써 우리는 데이터 보안을 더 잘 보호할 수 있으며 데이터 개인 정보 보호에 대한 사용자의 요구를 충족할 수 있습니다.

위 내용은 MySQL 데이터베이스에서 데이터를 암호화하고 해독하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.