이번 프로젝트에서 비밀번호 저장에 대한 로직을 구현하며 해싱(Hashing)과 암호화(Encryption)에 차이점에 대해서 공부해 보았다. 두 개념 모두 데이터를 변환하여 보호하는 기술이지만, 그 목적과 방식은 매우 다르다는 것을 알게 되었다.
1. 해싱(Hashing)이란?
해싱은 임의의 입력값을 고정된 길이의 문자열(해시 값)로 변환하는 과정이다.
대표적인 해시 함수로는 SHA-256, MD5가 있다.
특징
단방향 | 한 번 해싱된 값은 원래 데이터로 복원 불가능 |
고정된 길이 출력 | 입력 데이터의 크기과 관계없이 항상 일정한 길이의 해시값을 생성 |
충돌 방지 | 서로 다른 입력값이 같은 해시 값을 갖지 않음 |
빠른 연산 속도 | 데이터를 빠르게 변환할 수 있도록 최적화됨 |
사용 사례
1. 비밀번호 저장
2. 데이터 무결성 검증 (파일 다운로드 시 해시 값을 비교하여 데이터 변경 여부 확인)
2. 암호화(Encryption)이란?
암호화는 데이터를 특정 알고리즘을 사용하여 변환하는 과정으로, 인가된 사용자만 원본 데이터를 복원할 수 있도록 설계한다.
암호화는 크게 대칭키 암호화와 비대칭키 암호화로 나누어 진다.
특징
양방향 | 암호화된 데이터를 복호화하여 원본 데이터로 복원 가능 |
가변 길이 출력 | 입력 데이터의 길이에 따라 암호화된 데이터 크기가 변할 수 있음 |
보안성 확보 | 데이터 기밀성을 유지할 수 있도록 설계 |
암호화 방식
- 대칭키 암호화: 암호화와 복호화에 동일한 키를 사용 (AES, DES)
- 비대칭키 암호화: 공개키로 암호화하고 개인키로 복호화 (예: RSA, ECC)
사용 사례
1. 데이터 전송 보안 (예: HTTPS 프로토콜을 통한 웹사이트 통신 보호)
2. 파일 및 데이터 보호 (예: 중요한 문서 암호화)
3. 해싱과 암호화의 차이점 비교
항목 | 해싱(Hashing) | 암호화(Encryption) |
목적 | 데이터 무결성 검증, 빠른 검색 | 데이터 기밀성 유지 |
복원 가능 여부 | 불가능 (단반향) | 가능 (양방향) |
출력값 길이 | 고정 길이 | 가변 길이 |
사용 예시 | 비밀번호 저장, 무결성 검증 | 데이터 보호, 안전한 통신 |

4. 마무리
해싱과 암호화는 보안 분야에서 중요한 역할을 한다.
비밀번호 저장이나 데이터 무결성을 확인하는 경우에는 해싱을 사용하고, 데이터 전송 중 보호해야 하는 경우에는 암호화를 사용하는 것이 일반적이라고한다. 각각의 특성을 잘 이해하고 적절한 상황에 맞게 적용하자!

반응형
'Dev > CS' 카테고리의 다른 글
[CS] Base62 vs Base64 비교 및 용도별 적합성 (0) | 2025.03.12 |
---|---|
[DNS] MX 레코드 확인 방법 (0) | 2025.02.10 |
DKIM과 DMARC 이란? (0) | 2025.01.02 |
[검색엔진] Solr에 대해서 알아보자 (1) | 2024.11.27 |
[정보처리기사] 소프트웨어 아키텍처 (2) | 2024.11.19 |