inblog logo
|
devleekangho
    용어정리

    Base64

    KangHo Lee's avatar
    KangHo Lee
    Dec 06, 2024
    Base64
    Contents
    Base64 인코딩의 원리Base64 인코딩 예시Base64의 사용 사례
    • Base64는 바이너리 데이터를 텍스트 형식으로 인코딩하는 방법 중 하나입니다.
    • 바이너리 데이터(Byte 배열)를 텍스트 기반 시스템(예: 이메일, URL, JSON)에서 안전하게 전송할 수 있도록 도와줍니다.
    • Base64 인코딩은 데이터를 6비트 블록으로 나누어 각각을 64개의 ASCII 문자로 변환하는 방식으로 작동합니다.

    Base64 인코딩의 원리

    1. 바이너리 데이터를 6비트 블록으로 나누기
        • 바이너리 데이터는 8비트(1바이트) 단위로 되어 있습니다.
        • Base64 인코딩은 이 데이터를 6비트 단위로 나눕니다.
        • 예를 들어, 3바이트(24비트) 데이터는 4개의 6비트 블록으로 나뉩니다.
    1. 각 6비트 블록을 Base64 문자로 변환
        • 6비트 블록은 0부터 63까지의 값을 가질 수 있습니다.
        • 이러한 값은 Base64 인코딩 테이블을 참조하여 64개의 ASCII 문자로 변환됩니다.
        • Base64 문자 집합은 'A-Z', 'a-z', '0-9', '+', '/'로 구성됩니다.
    1. 패딩 처리
        • 인코딩할 데이터의 길이가 6비트의 배수가 아닐 경우, '=' 문자를 사용하여 길이를 맞춥니다.
        • 예를 들어, 인코딩할 데이터가 2바이트(16비트)일 경우, 2개의 '=' 패딩 문자가 추가됩니다.

    Base64 인코딩 예시

    예를 들어, 문자열 "Man"을 Base64로 인코딩하는 과정을 살펴보겠습니다.
    1. 바이너리 데이터로 변환
        • "Man"의 ASCII 코드는 다음과 같습니다:
          • M: 77
          • a: 97
          • n: 110
        • 이를 바이너리로 변환하면
        01001101 01100001 01101110
    1. 6비트 블록으로 나누기
        • 위의 바이너리 데이터를 6비트 블록으로 나눕니다
        010011 010110 000101 101110
    1. Base64 문자로 변환
        • 6비트 블록을 Base64 문자로 변환하면
        010011 -> T 010110 -> W 000101 -> F 101110 -> u
        • 따라서 "Man"을 Base64로 인코딩한 결과는 "TWFu"가 됩니다.

    Base64의 사용 사례

    1. 이메일 첨부 파일
        • 바이너리 데이터를 이메일로 전송할 때 Base64 인코딩을 사용하여 텍스트 형식으로 변환합니다.
    1. 데이터 URI (이미지 전송)
        • 웹 페이지에서 이미지를 포함할 때 Base64 인코딩을 사용하여 이미지 데이터를 텍스트 형식으로 변환합니다.
    1. JWT(Json Web Token)
        • JSON 데이터를 안전하게 전송하기 위해 Base64 인코딩을 사용합니다.

    주의 사항

    • 용량 증가
      • Base64 인코딩은 데이터 크기를 약 33% 증가시킵니다. 이는 인코딩 과정에서 데이터가 6비트에서 8비트로 확장되기 때문입니다.
    💡
    동영상 파일은 base64로 보내지 않습니다.
    multipart/form-data나 스트리밍 프로토콜을 활용합니다.
    • 보안
      • Base64는 데이터의 안전한 전송을 위한 인코딩 방식일 뿐, 데이터를 암호화하지 않습니다. 즉, 인코딩된 데이터를 복호화하는 것은 상대적으로 쉽습니다.
     
    Share article
    Contents
    Base64 인코딩의 원리Base64 인코딩 예시Base64의 사용 사례

    devleekangho

    RSS·Powered by Inblog