0

Kết quả Giải mã

Base64

Kết quả Mã hóa

Base64
Ngắt dòng

Về Base64

Base64 là phương thức mã hóa sử dụng các ký tự ASCII 7-bit có thể in được. Chủ yếu được sử dụng trong E-mail để truyền dữ liệu 8-bit qua đường truyền dữ liệu 7-bit.

Trong Base64, dữ liệu được chia thành từng 6 bit và chuyển đổi thành các ký tự chữ và số (A-Z, a-z, 0-9) và ký hiệu (+, /). Chuyển đổi mỗi 4 ký tự, và nếu cuối cùng không đủ 4 ký tự, nó sẽ được đệm thêm dấu bằng (=).

Ngoài ra, RFC 1421 (PEM: Privacy-Enhanced Mail) quy định xuống dòng mỗi 64 ký tự, và RFC 2045 (MIME) quy định xuống dòng mỗi 76 ký tự.

Bảng chuyển đổi ký tự Base64 như sau:

Dữ liệu 6-bitKý tự 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/

Ví dụ, nếu chuyển đổi "Hello" bằng Base64, kết quả sẽ như sau:

1. Chuyển sang biểu diễn nhị phân.

01001000 01100101 01101100 01101100 01101111  (trường hợp US-ASCII / UTF-8)

2. Chia thành từng 6 bit. Nếu không đủ 6 bit, đệm thêm "0" vào cuối.

010010 000110 010101 101100 011011 000110 111100

3. Sử dụng bảng chuyển đổi để chuyển sang ký tự. Chuyển đổi mỗi 4 ký tự, nếu không đủ 4 ký tự thì đệm thêm "=" vào cuối.

SGVs bG8=

4. Nối tất cả các ký tự lại để có kết quả chuyển đổi Base64.

SGVsbG8=

Định dạng tiêu đề tin nhắn MIME của E-mail (RFC 2047)

DenCode cũng hỗ trợ giải mã định dạng tiêu đề tin nhắn MIME dưới đây (RFC 2047). Định dạng này được sử dụng khi tiêu đề hoặc người nhận E-mail chứa các ký tự không phải ASCII.

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

Kết quả sau khi giải mã như sau:

Subject: サンプル

JSON Web Token (RFC 7519)

JSON Web Token (JWT) là một định dạng token biểu diễn dữ liệu JSON một cách gọn nhẹ bằng mã hóa Base64url. Nó được sử dụng rộng rãi cho xác thực và ủy quyền trong các ứng dụng web và được chuẩn hóa trong RFC 7519.

JWT bao gồm ba phần tử được phân tách bởi dấu chấm (.).

<Header>.<Payload>.<Signature>

Vai trò của mỗi phần tử như sau.

Phần tửMô tả
HeaderĐối tượng JSON chứa siêu dữ liệu như loại token (typ) và thuật toán ký (alg)
PayloadĐối tượng JSON chứa thông tin như ID người dùng và thời gian hết hạn
SignatureDữ liệu chữ ký được sử dụng để phát hiện giả mạo header và payload

Header và payload đều được mã hóa Base64url. Base64url thay thế "+" bằng "-" và "/" bằng "_", đồng thời bỏ qua phần đệm "=" so với Base64 tiêu chuẩn (RFC 4648). Điều này cho phép đưa chúng vào URL và header HTTP một cách an toàn.

Ví dụ, giải mã JWT sau đây sẽ cho header và payload dưới dạng JSON.

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

Các trường (claim) chính trong header và payload như sau.

TrườngTênMô tả
algAlgorithmThuật toán được sử dụng để ký hoặc mã hóa (ví dụ: HS256, RS256, ES256)
typTypeLoại token (thường là "JWT")
ctyContent TypeLoại nội dung của payload ("JWT" cho JWT lồng nhau)
kidKey IDMã định danh của khóa được sử dụng để xác minh chữ ký
jkuJWK Set URLURL tham chiếu JWK Set được sử dụng để xác minh chữ ký
x5uX.509 URLURL tham chiếu chuỗi chứng chỉ X.509 được sử dụng để xác minh chữ ký
x5tX.509 Certificate SHA-1 ThumbprintDấu vân tay SHA-1 của chứng chỉ X.509 được sử dụng để xác minh chữ ký
TrườngTênMô tả
issIssuerTổ chức phát hành token
subSubjectChủ thể của token (ví dụ: ID người dùng)
audAudienceNgười nhận token
expExpiration TimeThời gian hết hạn của token (Unix timestamp)
nbfNot BeforeThời gian trước đó token không hợp lệ (Unix timestamp)
iatIssued AtThời gian phát hành token (Unix timestamp)
jtiJWT IDMã định danh duy nhất của token