Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 테이블의 사용자 암호 열에서 MD5를 SHA256으로 변환하는 방법

MySQL에서 저장된 MD5 암호 해시를 SHA256으로 변환하려면 SHA2() 함수를 사용할 수 있습니다. 이 함수는 SHA-2 계열의 해시 알고리즘(SHA-224, SHA-256, SHA-384, SHA-512)을 지원하며, 두 번째 인자로 원하는 비트 길이를 지정하면 됩니다.

1. 테이블 생성

먼저 암호를 저장할 테이블을 생성합니다.

mysql> create table DemoTable818(UserPassword text);
Query OK, 0 rows affected (0.51 sec)

2. 샘플 데이터 삽입

INSERT 명령을 사용해 MD5로 해싱된 암호 값을 몇 개 저장합니다.

mysql> insert into DemoTable818 values(MD5('John_123'));
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable818 values(MD5('999Carol@22'));
Query OK, 1 row affected (0.14 sec)

3. 저장된 데이터 확인

SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable818;

위 쿼리는 다음과 같은 결과를 출력합니다.

+----------------------------------+
| UserPassword                     |
+----------------------------------+
| 47c7d0987db4e59e2264ce9fefce4977 |
| 950aa70edd5b686a807b3bfffdf2248c |
+----------------------------------+
2 rows in set (0.00 sec)

MD5 해시는 32자리 16진수 문자열로 저장되어 있는 것을 확인할 수 있습니다.

4. MD5를 SHA256으로 변환

이제 UPDATE 문과 SHA2() 함수를 사용하여 기존 MD5 해시를 SHA256으로 변환합니다.

mysql> update DemoTable818 set UserPassword=SHA2(UserPassword,256);
Query OK, 2 rows affected (0.19 sec)
Rows matched: 2 Changed: 2 Warnings: 0

5. 변환 결과 확인

테이블의 레코드를 다시 조회해 변환이 정상적으로 적용되었는지 확인합니다.

mysql> select *from DemoTable818;

변환 후 결과는 다음과 같습니다.

+------------------------------------------------------------------+
| UserPassword                                                     |
+------------------------------------------------------------------+
| 8b68c46294a9ccb2449324c24fe774f95b7c14e4b56fc51c7f8e6c5b01c7020f |
| 9cc80741546051ae3de7d31246327968c98af3c65125376acb7b49a0760d42a3 |
+------------------------------------------------------------------+
2 rows in set (0.00 sec)

주의 사항

SHA256 해시는 64자리 16진수 문자열이므로, 변환 전에 해당 열의 크기가 충분한지 반드시 확인해야 합니다. 위 예제에서는 TEXT 타입을 사용했기 때문에 문제가 없지만, CHAR나 VARCHAR 타입이라면 열 길이를 64자 이상으로 늘려야 데이터가 잘리지 않습니다.

또한 실무 환경에서는 단순 해시만 사용하기보다 솔트(salt)를 추가하거나 bcrypt, Argon2 같은 전용 암호화 알고리즘을 사용하는 것이 보안상 더 안전합니다.