0

디코딩 결과

Base64

인코딩 결과

Base64
줄바꿈

Base64에 대해서

Base64는 7비트 인쇄 가능한 ASCII 문자를 사용한 부호화 방식입니다. 주로 전자 메일에서 8비트 데이터를 7비트 데이터 경로로 전송하기 위해 사용합니다.

Base64에서는 데이터를 6비트씩 분할하고, 그것들을 영숫자(A-Z, a-z, 0-9)나 기호(+, /) 문자로 변환하여 나타냅니다. 4문자마다 변환하고, 마지막이 4문자에 미치지 못하는 경우는 등호 기호(=)로 패딩합니다.

또한 RFC 1421 (PEM: Privacy-Enhanced Mail)에서는 64문자마다 개행, RFC 2045 (MIME)에서는 76문자마다 개행하는 것이 규정되어 있습니다.

Base64 문자 변환표는 다음과 같습니다.

6비트 데이터Base64 문자
000000A
000001B
000010C
000011D
000100E
000101F
000110G
000111H
001000I
001001J
001010K
001011L
001100M
001101N
001110O
001111P
010000Q
010001R
010010S
010011T
010100U
010101V
010110W
010111X
011000Y
011001Z
011010a
011011b
011100c
011101d
011110e
011111f
100000g
100001h
100010i
100011j
100100k
100101l
100110m
100111n
101000o
101001p
101010q
101011r
101100s
101101t
101110u
101111v
110000w
110001x
110010y
110011z
1101000
1101011
1101102
1101113
1110004
1110015
1110106
1110117
1111008
1111019
111110+
111111/

예를 들어, 'Hello'를 Base64로 변환하면 다음과 같습니다.

1. 2진수 표현으로 한다.

01001000 01100101 01101100 01101100 01101111  (US-ASCII / UTF-8인 경우)

2. 6비트마다 구분한다. 6비트에 미치지 못하는 경우는 끝을 '0'으로 패딩한다.

010010 000110 010101 101100 011011 000110 111100

3. 변환표를 사용하여 문자로 변환한다. 4문자마다 변환하고, 4문자에 미치지 못하는 경우는 끝을 '='로 패딩한다.

SGVs bG8=

4. 문자를 모두 연결하여 Base64 변환 결과로 한다.

SGVsbG8=

이메일의 MIME 메시지 헤더 형식 (RFC 2047)

DenCode에서는 다음과 같은 MIME 메시지 헤더 형식(RFC 2047)의 디코딩도 지원합니다. 이 형식은 이메일의 제목이나 수신처 등에 ASCII 문자 이외가 포함되는 경우에 사용됩니다.

Subject: =?UTF-8?B?44K144Oz44OX44Or?=

디코딩 후의 결과는 다음과 같습니다.

Subject: サンプル

JSON Web Token (RFC 7519)

JSON Web Token (JWT)은 Base64url 인코딩을 사용하여 JSON 데이터를 간결하게 표현하는 토큰 형식입니다. 웹 애플리케이션에서의 인증 및 인가에 널리 사용되며, RFC 7519에서 표준화되어 있습니다.

JWT는 점 (.)으로 구분된 세 가지 요소로 구성됩니다.

<Header>.<Payload>.<Signature>

각 요소의 역할은 다음과 같습니다.

요소설명
Header토큰 유형 (typ) 및 서명 알고리즘 (alg) 등의 메타데이터를 포함하는 JSON 객체
Payload사용자 ID 및 만료 시간 등의 정보를 포함하는 JSON 객체
Signature헤더와 페이로드의 변조를 감지하기 위한 서명 데이터

헤더와 페이로드는 각각 Base64url로 인코딩됩니다. Base64url은 표준 Base64와 비교하여 "+"를 "-"로, "/"를 "_"로 대체하고, 패딩 "="를 생략합니다 (RFC 4648). 이를 통해 URL 및 HTTP 헤더에 안전하게 포함할 수 있습니다.

예를 들어, 다음 JWT를 디코딩하면 헤더와 페이로드를 JSON으로 얻을 수 있습니다.

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
{
  "alg": "HS256",
  "typ": "JWT"
}
{
  "sub": "1234567890",
  "name": "John Doe",
  "iat": 1516239022
}

헤더와 페이로드에 포함된 주요 필드 (클레임)는 다음과 같습니다.

필드명칭설명
algAlgorithm서명 또는 암호화에 사용되는 알고리즘 (예: HS256, RS256, ES256)
typType토큰 유형 (일반적으로 "JWT")
ctyContent Type페이로드의 콘텐츠 유형 (중첩된 JWT의 경우 "JWT")
kidKey ID서명 검증에 사용되는 키의 식별자
jkuJWK Set URL서명 검증에 사용되는 JWK Set의 참조 URL
x5uX.509 URL서명 검증에 사용되는 X.509 인증서 체인의 참조 URL
x5tX.509 Certificate SHA-1 Thumbprint서명 검증에 사용되는 X.509 인증서의 SHA-1 지문
필드명칭설명
issIssuer토큰 발급자
subSubject토큰의 주체 (예: 사용자 ID)
audAudience토큰 수신자
expExpiration Time토큰 만료 시간 (Unix 타임스탬프)
nbfNot Before토큰이 유효하지 않은 시작 시간 (Unix 타임스탬프)
iatIssued At토큰 발급 시간 (Unix 타임스탬프)
jtiJWT ID토큰의 고유 식별자