base64
- 바이너리 데이터를 ASCII 문자(A-Z, a-z, 0-9, +, /)만으로 표현하는 인코딩 방식
원리
- 3바이트(24 bit)를 6비트씩 4개로 쪼갠다.
- 각 6비트(0~ 63)를 64개 문자 중 하나로 매핑한다.
ex)
p a s s
01110000 01100001 01110011 01110011
→ 6비트씩 자른 후 각각 문자로 변환 → cGFzcw==
echo -n "pass" | base64
cGFzcw==사용 이유
- 원래 목적은 이메일 같은 텍스트 프로토콜로 바이너리(이미지, 파일 등)를 전송하기 위함이다.
특징
- 인코딩이지, 암호화가 아니다. 디코딩이 가능해서 보안 효과는 없다.
- 3바이트(24비트) -> 4문자(6비트씩 4개)로 변환되기 때문에 데이트 크기가 약 33% 늘어나는 tradeoff가 있다.
- 3바이트 단위로 처리되므로 끝에 2바이트 혹은 1바이트로 비는 부분이 생기면 0으로 패딩해서 크기를 맞춘다.
- 끝에 00000000으로 패딩된 부분은
=으로 표현한다. - URL에서 쓸 때는
+->-,/->_으로 바꾼 base64url 변형도 있다.