본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

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>` 를 위장하는 식이다. 따라서 입력값 검증은 디코딩을 모두 끝낸 뒤(정규화 후)에 수행해야 한다.