C - 인코딩, 디코딩, base64

markyang92·2024년 3월 19일
0

C

목록 보기
9/10

base64 인코딩

  • 이진데이터 -> 아스키 문자로 구성된 텍스트로 변환하는 인코딩방식
    • 총 64개의 아스키 문자가 인코딩에 사용되기 때문에 64진법(Base 64)라는 의미
    • 64개 아스키 문자
      • 알파벳 대소문자(52자)
      • 숫자(10자)
      • +,/
    • 이진 데이터를 그대로 포함할 수 없이, 텍스트만 허용되는 환경에서 이진 데이터를 텍스트형식으로 나타내기 위해 사용
      • 예: 이진 데이터인 이미지를 HTML 파일에 넣는 경우, base64로 인코딩해 넣을 수 있음

base64 인코딩 방식

  1. 원본 이진 데이터를 비트 나열로 표현, 이를 '6비트'씩 묶는다.
    6의 배수가 아닌 경우, 0을 뒤에 추가하여 6의 배수로 만든다.
  2. 각 '6비트 묶음'을 수로 변환한 뒤, base64테이블에서 해당하는 문자를 찾아 이로 치환한다. (https://www.garykessler.net/library/base64.html): base64 Table
  3. 치환 과정을 거친 뒤, 글자 수가 4의 배수가 되도록 문자 '='을 반복해 뒤에 추가한다. 이를 Padding
  4. Padding을 넣는 이유
    ZA 두 글자를 디코딩 시, 011001 000000 12개의 비트 나열로 바뀐다.
    이를 앞에서 8개씩 끊어 읽으면 아스키d(01100100) 이후 0000이 남는다.
    이 경우, 디코딩하는 입장에서 뒤에 추가적인 내용이 있는데 오지 않은 것인지, 아니면 여기서 디코딩을 끝내는 것인지 알 수 없다.
    그러므로, 총 비트의 개수가 8의 배수가 되게끔 패딩 문자 =를 뒤에 붙여 명확하게 한다.

https://tools.dreamhack.games/cyberchef

profile
pllpokko@alumni.kaist.ac.kr

0개의 댓글