MySQL에서 SHA256 해시의 길이 이해하기
이름 그대로 SHA256은 256비트 길이의 해시 값을 생성하는 알고리즘입니다. 여기서 중요한 점은 MySQL에 이 값을 저장할 때 어떤 데이터 타입을 사용해야 하는지 아는 것입니다.
왜 정확히 64자가 필요한가?
SHA256 해시 값은 일반적으로 16진수(hexadecimal) 형태로 표현됩니다. 16진수에서 한 자릿수는 4비트를 나타냅니다. 따라서 256비트 전체를 표현하려면 다음과 같이 계산할 수 있습니다.
256 ÷ 4 = 64자
즉, SHA256 해시 값을 문자열로 저장하려면 VARCHAR(64) 또는 CHAR(64) 데이터 타입을 사용하는 것이 적절합니다.
실습 예제: SHA256 해시 저장하기
1. 테이블 생성
먼저 해시 값을 저장할 테이블을 만들어 보겠습니다.
mysql> create table SHA256Demo
-> (
-> Password varchar(64)
-> );
Query OK, 0 rows affected (0.54 sec)
2. 데이터 삽입
다음으로 64자 길이의 SHA256 해시 값을 테이블에 삽입합니다.
mysql> insert into SHA256Demo values('4e2e1a39dba84a0b5a91043bb0e4dbef23970837');
Query OK, 1 row affected (0.18 sec)3. 결과 조회
저장된 모든 레코드를 조회해 보겠습니다.
mysql> select * From SHA256Demo;
실행 결과는 다음과 같습니다.
+-------------------------------------------+
| Password |
+-------------------------------------------+
| 4e2e1a39dba84a0b5a91043bb0e4dbef23970837 |
+-------------------------------------------+
1 row in set (0.00 sec)
정리
- SHA256 해시는 256비트 길이입니다.
- 16진수 한 자릿수는 4비트를 나타내므로, 해시 값은 64자의 문자열이 됩니다.
- MySQL에서는
VARCHAR(64)또는 고정 길이의CHAR(64)컬럼으로 저장하는 것이 가장 효율적입니다.