이번 프로젝트에서 비밀번호 저장에 대한 로직을 구현하며 해싱(Hashing)과 암호화(Encryption)에 차이점에 대해서 공부해 보았다. 두 개념 모두 데이터를 변환하여 보호하는 기술이지만, 그 목적과 방식은 매우 다르다는 것을 알게 되었다.


1. 해싱(Hashing)이란?

해싱은 임의의 입력값을 고정된 길이의 문자열(해시 값)로 변환하는 과정이다.

대표적인 해시 함수로는 SHA-256, MD5가 있다.

특징

단방향 한 번 해싱된 값은 원래 데이터로 복원 불가능
고정된 길이 출력 입력 데이터의 크기과 관계없이 항상 일정한 길이의 해시값을 생성
충돌 방지 서로 다른 입력값이 같은 해시 값을 갖지 않음
빠른 연산 속도 데이터를 빠르게 변환할 수 있도록 최적화됨

 

사용 사례

1. 비밀번호 저장

2. 데이터 무결성 검증 (파일 다운로드 시 해시 값을 비교하여 데이터 변경 여부 확인)


2. 암호화(Encryption)이란?

암호화는 데이터를 특정 알고리즘을 사용하여 변환하는 과정으로, 인가된 사용자만 원본 데이터를 복원할 수 있도록 설계한다.

암호화는 크게 대칭키 암호화와 비대칭키 암호화로 나누어 진다.

특징

양방향 암호화된 데이터를 복호화하여 원본 데이터로 복원 가능
가변 길이 출력 입력 데이터의 길이에 따라 암호화된 데이터 크기가 변할 수 있음
보안성 확보 데이터 기밀성을 유지할 수 있도록 설계

암호화 방식

- 대칭키 암호화: 암호화와 복호화에 동일한 키를 사용 (AES, DES)

- 비대칭키 암호화: 공개키로 암호화하고 개인키로 복호화 (예: RSA, ECC)

사용 사례

1. 데이터 전송 보안 (예: HTTPS 프로토콜을 통한 웹사이트 통신 보호)

2. 파일 및 데이터 보호 (예: 중요한 문서 암호화)


3. 해싱과 암호화의 차이점 비교

항목 해싱(Hashing) 암호화(Encryption)
목적 데이터 무결성 검증, 빠른 검색 데이터 기밀성 유지
복원 가능 여부 불가능 (단반향) 가능 (양방향)
출력값 길이 고정 길이 가변 길이
사용 예시 비밀번호 저장, 무결성 검증 데이터 보호, 안전한 통신

해싱vs암호화


4. 마무리

해싱과 암호화는 보안 분야에서 중요한 역할을 한다.

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


반응형