인코딩
IT 위키
Encoding; 부호화
데이터를 특정 규칙에 따라 다른 형식의 부호로 바꾸는 것
- 반대 과정은 디코딩(복호화가 아니라 복호, Decoding)이라 한다.
- 암호화와는 다르다. 인코딩은 규칙만 알면 누구나 되돌릴 수 있고, 목적이 기밀 유지가 아니라 호환·전송·저장이다.
| 구분 | 인코딩 | 암호화 | 해시 |
|---|---|---|---|
| 목적 | 형식 변환, 호환성 | 기밀 유지 | 무결성 확인 |
| 열쇠 | 불필요 | 필요 | 불필요 |
| 되돌리기 | 가능 (누구나) | 가능 (키 있는 사람만) | 불가능 |
| 예 | Base64, UTF-8, URL 인코딩 | AES, RSA | SHA-256 |
Base64 는 암호화가 아니다. 보안 문제에서 자주 나오는 함정이다.
- 문자 인코딩 : 문자를 숫자 코드로 대응시킨다. ASCII, EUC-KR, UTF-8, 유니코드
- 전송용 인코딩 : 바이너리를 텍스트로 안전하게 바꾼다. Base64, URL 인코딩, MIME
- 신호 인코딩 : 디지털 데이터를 전기 신호로 표현한다. NRZ, 맨체스터, 4B/5B
- 미디어 인코딩 : 음성·영상을 압축한다. MP3, H.264
공격자가 필터를 우회하기 위해 입력값을 인코딩해서 보내는 경우가 많다. URL 인코딩이나 유니코드 인코딩으로 `<script>` 를 위장하는 식이다. 따라서 입력값 검증은 디코딩을 모두 끝낸 뒤(정규화 후)에 수행해야 한다.
