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 같은 전용 암호화 알고리즘을 사용하는 것이 보안상 더 안전합니다.