base64

Tony·2023년 1월 6일
0

base64

  • Binary Data를 Character set에 영향을 받지 않는 공통 ASCII 영역의 문자로만 이루어진 문자열로 바꾸는 Encoding이다.

  • Base64를 글자 그대로 직역하면 64진법이라는 뜻이다.

    • 64진법은 컴퓨터한테 특별한데 그 이유는 64가 2의 제곱수 64=2^6이며 2의 제곱수에 기반한 진법 중 화면에 표시되는 ASCII 문자들로 표시할 수 있는 가장 큰 진법이기 때문이다. (ASCII에는 제어문자가 다수 포함되어 있기 때문에 화면에 표시되는 ASCII 문자는 128개가 되지 않는다.)
  • 3byte(24bit)씩 쪼개서 6bit씩 인코딩을 한다

  • 6bit로 나누고 남는 곳은 padding(=)을 사용해서 채운다

  • e.g.

    • 000000 → A

base64 변환 예시

  • ASCII -> binary -> base64
  • e.g.
    • 문자열 : Man
    • binary
      • M : 01001101
      • a : 01100001
      • n : 01101110
      • Man : 010011010110000101101110
    • 6bit씩 묶기
      • 010011 / 010110 / 000101 / 101110
    • base64로 표현
      • T : 010011
      • W : 010110
      • F : 000101
      • u : 101110
    • 결과 : Man -> TWFu

base64를 사용하는 이유

  • 위 예시와 같이 base64를 사용하면 원본보다 사이즈가 커진다
  • 그럼에도 불구하고 base64를 사용하는 이유는 ASCII는 7bit encoding인데 나머지 1bit를 처리하는 방식이 시스템별로 다르고
  • 일부 제어문자의 경우도 시스템별로 다른 값을 같기 때문이다

웹에서 사용 예시

  • base64는 www(world wide web)에서 널리 쓰인다
  • HTML이나 CSS같이 문자로 된 곳에 이미지 파일 또는 다른 binary 자산을 넣는 기능을 가지고 있다
  • SMTP(이메일을 주고 받는 프로토콜)에서 7bit ASCII문자만 사용하도록 디자인되어, 이메일을 통한 binary data 전송에도 널리 쓰인다

base64Url

  • 62번째(+)와 63번째(/) 문자를 각각 -_ 로 변경하여 URL에서 안전하게 사용할 수 있게 한 것

참고

profile
움직이는 만큼 행복해진다

0개의 댓글