본문 바로가기
🚀 데브 노트 (IT 지식 & 팁)

암호화와 해싱의 차이점, '자물쇠 금고와 고기 분쇄기' 비유로 완벽 정리!

by 데브프리 2026. 7. 11.

안녕하세요, 여러분의 든든한 IT 길잡이 데브프리입니다.

 

웹 서비스를 개발할 때 보안은 절대 타협할 수 없는 중요한 요소입니다. 유저의 소중한 비밀번호나 주민등록번호 같은 개인정보를 DB에 그냥 날것(Plain Text)으로 저장했다가 해킹이라도 당하면 정말 상상만 해도 끔찍한 대참사가 일어나기 때문이죠.

 

그래서 우리는 데이터를 알아볼 수 없게 꼬아버리는 작업을 합니다. 이때 개발자들이 가장 많이 쓰는 단어가 바로 '암호화'와 '해싱'입니다.

 

"회원 비밀번호는 암호화해서 저장하면 되나요?"

"둘 다 데이터를 알아볼 수 없게 바꾸는 건데, 뭐가 다른 거죠?"

 

의외로 많은 주니어 개발자들과 면접 준비생들이 이 둘을 똑같은 개념으로 오해하곤 합니다. 하지만 백엔드 기술 면접에서 이 둘의 차이를 모르면 보안의 '보' 자도 모른다는 인상을 주기 십상인데요. 오늘은 복잡한 암호학 이론 대신, '자물쇠 금고'와 '고기 분쇄기'에 비유하여 3분 만에 개념을 완벽하게 머릿속에 정리해 드리겠습니다!

 

1. 암호화 (Encryption): 열쇠로 잠그고 여는 '자물쇠 금고' (양방향)

암호화(Encryption)는 데이터를 보낼 때 알아볼 수 없는 암호문으로 바꾸었다가, 받는 사람이 이를 다시 원래대로 되돌릴 수 있는 양방향(Two-way) 전송 방식입니다.

암호화 데이터 복호화 자물쇠 열쇠 비유
암호화는 열쇠(Key)만 있으면 언제든 상자를 열어서 원래의 데이터로 되돌릴 수 있는 양방향 방식입니다.

일상생활에 비유하자면 암호화는 '자물쇠 금고 상자'입니다.

내가 친구에게 비밀 편지를 보낼 때, 편지를 금고에 넣고 자물쇠로 잠가서 보냅니다. 중간에 다른 사람(해커)이 이 금고를 가로채더라도 열쇠가 없으니 안의 내용을 볼 수 없습니다. 하지만 편지를 안전하게 받은 친구는 자신이 가진 '열쇠(Key)'를 이용해 자물쇠를 열고 원래의 편지 내용(평문)을 읽을 수 있습니다.

 

이렇게 암호문으로 바꾸는 것을 암호화, 열쇠로 풀어 원래 데이터로 돌리는 것을 복호화(Decryption)라고 합니다.

  • 장점: 필요한 경우 언제든지 원래의 데이터를 다시 확인할 수 있습니다.
  • 단점: 만약 해커가 서버 뒤에 숨겨둔 진짜 '열쇠'를 훔쳐 가 버린다면, 금고 안의 모든 데이터가 한순간에 털리게 됩니다.

 

2. 해싱 (Hashing): 절대 되돌릴 수 없는 '고기 분쇄기' (단방향)

반면 해싱(Hashing)은 어떤 데이터를 집어넣든 간에 완전히 찌그러뜨려서 뺴도 박도 못하는 고정된 길이의 암호문(해시값)으로 바꾸는 단방향(One-way) 방식입니다.

해싱 해시 함수 단방향 암호화 비유
해싱은 아무리 큰 데이터를 넣어도 일정한 크기의 고유한 지문으로 갈아버리며, 아무리 노력해도 원래 상태로 되돌릴 수 없는 일방통행 방식입니다.

비유하자면 해싱은 '고기 분쇄기(믹서기)'입니다.

분쇄기 안에 신선한 소고기 스테이크(데이터)를 넣고 버튼을 누르면 갈아진 고기(해시값)가 나옵니다. 자, 이제 이 갈아진 고기를 가지고 다시 원래의 촉촉한 스테이크로 되돌릴 수 있을까요? 지구상의 어떤 과학 기술을 동원해도 절대 불가능합니다. 해싱은 이처럼 원래대로 되돌리는 '복호화'가 아예 불가능합니다. 오직 일방통행만 존재할 뿐이죠. 또한 재미있는 특징은, 솜사탕을 넣든 코끼리를 넣든 분쇄기를 거쳐 나오는 결과물의 크기(글자 수)는 언제나 항상 똑같다는 점입니다. (예: SHA-256 알고리즘은 뭘 넣어도 무조건 64글자의 암호문이 나옵니다.)

  • 장점: 복호화가 원천적으로 불가능하기 때문에, DB가 통째로 해킹당하더라도 해커는 유저의 원래 데이터를 절대 알 수 없습니다. 보안성이 극대화됩니다.
  • 단점: 개발자인 나조차도 원래 데이터가 무엇이었는지 절대 확인할 방법이 없습니다.

 

3. 실무에서는 어떻게 쓰일까요? (비밀번호 vs 개인정보)

성격이 완전히 다르기 때문에, 백엔드 개발자는 데이터의 종류에 따라 두 기술을 철저하게 나누어 적용해야 합니다.

  1. 유저의 비밀번호 ➡️ 무조건 해싱(Hashing)!
    • 로그인 비밀번호는 개발자도 알 필요가 없고, 알아서도 안 되는 절대 보안 영역입니다. 유저가 회원가입할 때 1245를 입력하면 백엔드는 이를 고기 분쇄기에 갈아서 a1b2c3... 이라는 해시값으로 DB에 저장합니다.
    • 나중에 유저가 로그인할 때 입력한 비밀번호를 다시 분쇄기에 갈아서 DB에 있는 갈아진 고기와 모양이 똑같은지 비교만 하는 식으로 인증을 처리합니다. 원래 값이 무엇인지 복구할 필요가 전혀 없기 때문이죠.
  2. 주민등록번호, 계좌번호, 이메일 ➡️ 암호화(Encryption)!
    • 마이페이지 화면에 유저의 이메일 주소나 계좌번호를 다시 띄워주거나, 결제 모듈에 정보를 전달해야 할 때는 원래 데이터를 복구해야만 합니다. 갈아버리면 다시는 쓸 수 없기 때문에, 이때는 열쇠로 잠갔다가 풀 수 있는 양방향 암호화(AES 알고리즘 등)를 사용해야 합니다.

 

4. 한눈에 비교하는 요약표

비교 항목 암호화 (Encryption) 해싱 (Hashing)
비유하자면? 열쇠로 여닫는 '자물쇠 금고' 되돌릴 수 없는 '고기 분쇄기'
방향성 양방향 (Two-way) 단방향 (One-way)
복호화 가능 여부 가능 (열쇠가 있으면 원본 복구 가능) 불가능 (원천적으로 원본 복구 불가)
결과물 길이 원본 데이터가 길어지면 암호문도 길어짐 입력값 길이에 상관없이 항상 고정된 길이
핵심 목적 데이터 전송 중 도청 방지 (데이터 보호) 데이터의 위변조 방지 및 무결성 검증
대표적인 종류 AES, DES, RSA SHA-256, MD5, Bcrypt
실무 사용처 주민등록번호, 계좌번호, 대칭키 통신 회원 비밀번호 저장, 파일 무결성 체크

 

마무리

정리해 볼까요?

  • 데이터를 안전하게 보관했다가 나중에 다시 꺼내서 써야 한다면 복호화가 가능한 암호화,
  • 나조차도 원본을 알 필요가 없고 오직 "동일한 데이터인지" 확인만 하는 용도라면 복호화가 불가능한 해싱을 사용합니다.

이제 면접관이 "비밀번호는 어떻게 저장하나요?"라고 물었을 때, "암호화해서 저장합니다" 대신 "보안과 복호화 방지를 위해 SHA-256이나 Bcrypt 알고리즘을 이용해 '해싱'하여 저장합니다"라고 대답해 보세요. 면접관의 눈빛이 신뢰로 가득 차게 될 것입니다.

 

오늘의 데브 노트가 유익하셨다면 공감과 댓글 부탁드립니다. 다음 시간에도 초보 개발자들의 머리를 아프게 하는 헷갈리는 IT 지식을 쉽고 명쾌하게 가져오겠습니다. 지금까지 데브프리였습니다. 감사합니다!