인코딩과 디코딩

2024. 4. 2. 11:59·knowledge/기타 지식

    1. 인코딩/디코딩 이란? 

    데이터를 다른 형식이나 코드로 변환하는 과정입니다.

    주로 데이터 크기를 줄이고, 컴퓨터가 이해하기 쉽게 변환합니다.

    인코딩으로 데이터를 변환하고 디코딩으로 원문을 구할 수 있습니다. 

     


    2. 종류 

    ▶ 아스키 코드 

    아스키 코드는 미국 표준 코드로 문자를 숫자로 변환하는 코드입니다. 

    아스키 문자 1개는 1바이트 크기로, 7비트로 문자를 표현하고 1비트는 오류 체크를 위해 사용합니다. 

    즉, 2^7 = 128 개의 문자 표현이 가능합니다. 

    아스키 코드는 제어문자, 가시문자로 이루어져 있습니다. 

     

    ▶ 유니코드 

    아스키 코드의 제한적인 표현 범위 때문에 유니코드가 등장했습니다. 

    전세계 모든 언어의 문자에 고유한 번호를 부여하는 국제 표준 코드입니다. 

    최대 32비트로 문자 1개를 표현합니다. 

    UTF-8, UTF-16, UTF-32 등 다양한 인코딩 방식이 존재하고 UTF 뒤의 숫자는 비트를 의미합니다. 

     

    ▶ URL 인코딩 (퍼센트 인코딩) 

    웹에서 사용되는 URL을 인코딩하기 위해서 사용하는 방식입니다. 

    URL은 특정한 형식의 문자열만 허용합니다. ( 알파벳 대소문자, 숫자, 일부 특수문자 )

    URL 인코딩은 문자열을 인터넷으로 전송 가능한 형식으로 변환합니다. 보통 허용되지 않는 문자는 밑과 같습니다.

    :/#[]@!$`()*+,;=%공백

     

     

    URL 인코딩은 %기호 뒤에 문자의 아스키 코드 16진수 값을 붙여 나타냅니다.

     

    ▶ base64 인코딩 

    base64 인코딩은 이진 데이터를 아스키 문자로 구성된 텍스트로 변환합니다. 

    64개의 아스키 문자가 인코딩에 사용되어서 이러한 이름이 붙여졌습니다. ( 알파벳 대소문자 52개 + 숫자 10개 + , "+", "/" )

     

    base64는 이진 데이터를 그대로 포함할 수 없이 텍스트만 허용되는 환경에서 이진 데이터를 텍스트 형식으로 나타내기 위해 사용됩니다. 

     

    → 인코딩 방식 

    1. 이진 데이터를 비트 나열로 표시, 6비트 씩 끊어서 묶기. 6의 배수가 아니면 0을 추가하여 6의 배수로 만듦

    2. 각 6비트 묶음을 수로 변환하고 치환 

    3. 글자 수가 4의 배수가 되도록 문자 '='를 반복해 뒤에 추가하는데 이것을 패딩(padding)이라고 합니다.

     

    ** 패딩을 하는 이유는 데이터의 종료를 명확히 하고 , 데이터 구조를 올바르게 파싱하는데 필요합니다.

     

     

     

    참고 문헌

    https://www.redhat.com/sysadmin/base64-encoding

    저작자표시 비영리 변경금지 (새창열림)

    'knowledge > 기타 지식' 카테고리의 다른 글

    Base64  (0) 2024.05.11
    논리 연산, 비트 연산  (0) 2024.04.02
    bit, byte, Byte ordering  (0) 2024.04.02
    진법  (2) 2024.04.02
    컴퓨터 과학(Computer Science)이란?  (0) 2024.04.01
    'knowledge/기타 지식' 카테고리의 다른 글
    • Base64
    • 논리 연산, 비트 연산
    • bit, byte, Byte ordering
    • 진법
    스우스우03
    스우스우03
    보안 전문가가 되기 위한 노력들
    • 스우스우03
      스우스우
      스우스우03
    • 전체
      오늘
      어제
      • 분류 전체보기 (142)
        • 환경 세팅 및 사용법 (12)
          • 가상환경 (3)
          • Visual Studio Code (3)
          • GitHub (6)
        • Language (17)
          • Python (7)
          • C (2)
          • 알고리즘 (8)
        • Hack&Dev (15)
          • 암호학 (3)
          • Web (11)
          • Pwnable (1)
        • Wargame (88)
          • bandit wargame (42)
          • natas wargame (11)
          • wargame 암호학 (7)
          • Webhacking.kr (26)
          • wargame forensic (1)
          • wargame misc (1)
        • knowledge (8)
          • 기타 지식 (8)
        • 기타... (1)
    • hELLO· Designed By정상우.v4.10.0
    스우스우03
    인코딩과 디코딩
    상단으로

    티스토리툴바