본문 바로가기

개발/BACK

MySQL 내장 함수를 통해 비밀번호 암호화 하기

728x90

데이터베이스에 저장된 비밀번호는 반드시 암호화되어야 합니다. 암호화를 통해 비밀번호의 보안을 강화할 수 있으며, 데이터 유출 시에도 비밀번호가 보호됩니다. 이 포스팅에서는 MySQL 내장 함수를 사용하여 비밀번호를 암호화하는 방법을 소개합니다.

 

MySQL 내장 암호화 함수

MySQL에는 비밀번호 암호화를 위해 사용할 수 있는 여러 내장 함수가 있습니다. 그 중 가장 많이 사용되는 함수는 MD5(), SHA1(), SHA2(), 그리고 PASSWORD() 함수입니다. 각 함수의 사용 예제와 함께 설명하겠습니다.

1. MD5() 함수

MD5() 함수는 입력 문자열에 대해 MD5 해시를 생성합니다. 그러나 MD5는 보안 취약점이 존재하기 때문에 현재는 보안 요구 사항을 충족하지 못할 수 있습니다.

 

SELECT MD5('yourpassword');

 

 

결과 예제:

 

5f4dcc3b5aa765d61d8327deb882cf99

 

 

2. SHA1() 함수

SHA1() 함수는 입력 문자열에 대해 SHA-1 해시를 생성합니다. SHA-1은 MD5보다 강력하지만, 여전히 일부 보안 취약점이 있습니다.

 

SELECT SHA1('yourpassword');

 

 

결과 예제:

 

5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8

 

 

3. SHA2() 함수

SHA2() 함수는 입력 문자열에 대해 SHA-2 해시를 생성합니다. SHA-2는 SHA-1보다 훨씬 강력한 해시 알고리즘입니다. 이 함수는 두 번째 인자로 해시 길이를 지정해야 합니다. 일반적으로 256비트 해시(SHA-256)를 사용합니다.

 

SELECT SHA2('yourpassword', 256);

 

결과 예제:

5e884898da28047151d0e56f8dc6292773603d0d6aabbdd4f207b0cdd21de94b

 

 

4. PASSWORD() 함수

PASSWORD() 함수는 MySQL 내부적으로 사용되는 해시 알고리즘을 사용하여 비밀번호를 암호화합니다. 그러나 이 함수는 MySQL 사용자 비밀번호 저장에만 사용되며, 일반 데이터 암호화에는 권장되지 않습니다.

 

SELECT PASSWORD('yourpassword');

 

 

결과 예제:

 

*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19

 

 

비밀번호 암호화 및 저장 예제

다음은 사용자의 비밀번호를 SHA-256 알고리즘을 사용하여 암호화하고 이를 users 테이블에 저장하는 예제입니다.

1. users 테이블 생성

 

CREATE TABLE users (
  user_id INT PRIMARY KEY AUTO_INCREMENT,
  username VARCHAR(50) NOT NULL,
  password_hash VARCHAR(64) NOT NULL
);

 

 

2. 비밀번호 암호화 및 저장

사용자 등록 시 비밀번호를 SHA-256으로 암호화하여 저장합니다.

 

INSERT INTO users (username, password_hash)
VALUES ('user1', SHA2('user1password', 256));

 

 

3. 비밀번호 검증

로그인 시 사용자가 입력한 비밀번호를 동일한 방식으로 암호화하여 저장된 해시와 비교합니다.

 

SELECT * FROM users
WHERE username = 'user1' AND password_hash = SHA2('user1password', 256);

 

 

결론

MySQL 내장 함수를 사용하면 비밀번호를 안전하게 암호화할 수 있습니다. SHA-256과 같은 강력한 해시 알고리즘을 사용하여 비밀번호를 저장하면 데이터 유출 시에도 비밀번호의 안전을 보장할 수 있습니다. 이 포스팅이 비밀번호 암호화 방법을 이해하고 구현하는 데 도움이 되길 바랍니다.

728x90