← 질문 목록
#361깊이 0
인코딩과 암호화와 해싱은 무엇이 다른가?
목적이 다르다. 인코딩은 옮기려고, 암호화는 감추려고, 해싱은 같은지 확인하려고 모양을 바꾼다.
| 대상 | 되돌릴 수 있나 | 무엇을 위해 쓰나 |
|---|---|---|
| 인코딩 | 누구나 되돌린다 | 안전하게 옮기려고 |
| 암호화 | 열쇠가 있어야 되돌린다 | 내용을 감추려고 |
| 해싱 | 되돌리는 계산이 없다 | 같은지 확인하려고 |
base64가 인코딩이다. 비밀이 아니다. 바이너리를 글자만 다루는 통로로 보내려고 모양을 바꾼 것이고, 누구나 원래대로 되돌린다.
주의
그래서 base64로 감췄다고 말하면 안 된다. 인코딩만 해서 담은 토큰이라면 그 안의 내용을 아무나 열어 읽을 수 있다.
암호화는 열쇠가 본체다. 알고리즘은 공개돼 있고 열쇠만 비밀이다. 열쇠가 새면 알고리즘이 아무리 튼튼해도 소용이 없다.
해싱은 한 방향이다. 같은 입력이면 같은 값이 나오므로 같은지 확인할 수 있고, 나온 값에서 입력을 되돌리는 계산은 없다.
되돌리는 계산이 없다는 것과 못 알아낸다는 것은 다르다. 후보가 적으면 하나씩 넣어 보며 찾는다. 비밀번호에 소금과 느린 해시를 쓰는 이유가 이것이다.
인코딩·암호화·해싱은 목적이 다르다. 비밀번호를 암호화해 저장한다고 말하면 열쇠를 쥔 쪽은 전부 읽을 수 있다는 뜻이 된다.
추천 꼬리질문
관련 질문
- 비밀번호를 그냥 해시하면 왜 안 되는가?인프라 · 보안해싱의 용도를 구분해야 비밀번호 저장에 왜 소금과 느린 해시가 따로 필요한지 이해된다.
- 한글이 깨져 보이는 이유는?언어 · 런타임인코딩이라는 같은 밑바탕을 다룬다 — 한쪽은 규칙이 어긋나 깨지는 현상을, 한쪽은 인코딩이 암호화·해싱과 어떻게 다른지를 다룬다.
- HTTPS는 HTTP와 무엇이 다른가?네트워크HTTPS가 HTTP에 더하는 것이 정확히 암호화다 — 인코딩과 암호화의 구분이 그 이해의 전제다.
- 해시 충돌을 해결하는 두 방식의 차이는 무엇인가?자료구조 · 알고리즘
- 좋은 해시 함수가 갖춰야 할 조건은 무엇인가?자료구조 · 알고리즘