CoderTools

Base64 인코더/디코더

텍스트 및 파일 변환을 지원하여 Base64 문자열을 빠르게 인코딩 및 디코딩합니다

문자셋

Base64란 무엇인가요?

Base64는 64개의 인쇄 가능한 ASCII 문자를 사용하여 바이너리 데이터를 나타내는 인코딩 방식입니다. 이러한 문자에는 대문자와 소문자, 숫자 및 일부 특수 기호가 포함됩니다. Base64는 이메일 첨부 파일 및 URL 매개변수와 같이 텍스트 전용 채널을 통해 바이너리 데이터를 전송해야 하는 시나리오에서 널리 사용됩니다. Base64 인코딩 방식은 원래 RFC 4648MIME 사양 (RFC 2045)에서 정의되었습니다.

Base64 인코딩 알고리즘 원리:

Base64 인코딩 프로세스는 다음 단계로 나눌 수 있습니다:

  1. 입력 데이터를 각 3바이트씩 그룹으로 분할합니다
  2. 이 3바이트(24비트)를 각각 6비트씩 4개 그룹으로 재배열합니다
  3. 각 6비트 값(범위 0-63)을 Base64 문자 집합에 대한 인덱스로 매핑합니다
  4. 마지막 그룹이 3바이트보다 적으면 0비트로 채우고 결과 끝에 해당 개수의 등호(=)를 패딩으로 추가합니다

Base64 문자 집합: A-Z, a-z, 0-9, +, /

패딩 문자: =

변환 예제:

텍스트 "Man"의 ASCII 코드: 77 97 110
이진 표현: 01001101 01100001 01101110
6비트로 재그룹화: 010011 010110 000101 101110
십진수 값: 19 22 5 46
Base64 결과: T W F u

간소화된 JavaScript 구현:

// Base64 encoding implementation example (simplified)
function base64Encode(str) {
    // Base64 character set
    const base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
    let result = '';
    let i = 0;

    // Process every 3 characters as a group
    while (i < str.length) {
        const char1 = str.charCodeAt(i++);
        const char2 = i < str.length ? str.charCodeAt(i++) : 0;
        const char3 = i < str.length ? str.charCodeAt(i++) : 0;
        
        // Convert 3 8-bit bytes into 4 6-bit indices
        const triplet = (char1 << 16) + (char2 << 8) + char3;
        
        // Extract 4 6-bit values from the triplet
        const index1 = (triplet >> 18) & 0x3F;
        const index2 = (triplet >> 12) & 0x3F;
        const index3 = (triplet >> 6) & 0x3F;
        const index4 = triplet & 0x3F;
        
        // Add padding based on the original data length
        if (i - 3 > str.length) {
            result += base64chars[index1] + base64chars[index2] + '==';
        } else if (i - 2 > str.length) {
            result += base64chars[index1] + base64chars[index2] + base64chars[index3] + '=';
        } else {
            result += base64chars[index1] + base64chars[index2] + base64chars[index3] + base64chars[index4];
        }
    }
  
    return result;
}

일반적인 사용 사례:

  • 이메일 첨부 파일 인코딩 (MIME 표준)
  • URL에서 안전한 데이터 전송 (Base64url 변형 사용, '+'와 '/'가 '-'와 '_'로 대체됨)
  • HTML 또는 CSS에 바이너리 이미지 삽입 (data URI 스킴)
  • 간단한 데이터를 단일 문자열로 저장 (JWT 토큰 구성 요소 등)
  • XML 및 JSON에 바이너리 데이터 포함 (특수 문자 이스케이프 문제 방지)

고급 기능

16진수 형식 지원

우리 도구는 프로그램 코드에서 바이너리 데이터를 다루는 개발자에게 유용한 16진수 형식 입력 및 출력을 지원합니다.

  • 입력: 0x11,0x22,0x33 또는 간단히 112233과 같은 hex 형식을 허용합니다
  • 출력: 디코딩된 Base64를 코드 삽입을 위해 hex 형식으로 다시 변환합니다

문자셋 지원

다양한 문자셋은 텍스트를 바이트로 다르게 인코딩합니다. 우리 도구는 다양한 텍스트 인코딩을 처리하기 위해 여러 문자셋을 지원합니다:

  • UTF-8: 모든 유니코드 문자를 지원하는 범용 인코딩 (기본값)
  • ASCII: 기본 영어 문자를 지원하는 7비트 인코딩 (0-127)
  • Latin-1 (ISO-8859-1): 서유럽 문자를 지원하는 8비트 인코딩 (ISO-8859-1)
  • UTF-16: Windows와 Java에서 일반적으로 사용되는 16비트 인코딩 (Little Endian)

중요 사항:

  • Base64로 인코딩된 데이터는 일반적으로 원본 데이터보다 약 33% 더 큽니다 (3바이트가 4문자가 되기 때문)
  • Base64는 암호화 알고리즘이 아니라 인코딩 방법일 뿐이며 보안을 제공하지 않습니다
  • 큰 파일의 Base64 인코딩은 상당한 메모리와 처리 시간을 소비할 수 있습니다
  • URL 안전 Base64 변형은 URL 인코딩 문제를 방지하기 위해 다른 문자 집합을 사용합니다
  • 표준 Base64는 줄 길이를 제한하기 위해 줄바꿈을 포함할 수 있으며, 일부 애플리케이션에서는 추가 처리가 필요합니다

Base64와 다른 인코딩 비교:

인코딩 유형 특성 주요 사용처
Base64 바이너리 데이터를 나타내기 위해 64개의 ASCII 문자 사용 이메일 첨부 파일, 텍스트 내 바이너리 데이터 전송
URL 인코딩 특수 문자를 %XX 형식으로 변환 URL 매개변수 전달, 폼 제출
Hex 인코딩 각 바이트는 두 개의 16진수 문자로 표현됨 해시 값 표현, 바이너리 데이터 시각화

Base64에 대한 더 많은 공식 정보는 다음 리소스를 참조하세요: RFC 4648 (Base64 표준) | 위키백과: Base64 | RFC 2045 (MIME 사양)