Kết quả Giải mã
Kết quả Mã hóa
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-bit | Ký tự Base64 |
|---|---|
| 000000 | A |
| 000001 | B |
| 000010 | C |
| 000011 | D |
| 000100 | E |
| 000101 | F |
| 000110 | G |
| 000111 | H |
| 001000 | I |
| 001001 | J |
| 001010 | K |
| 001011 | L |
| 001100 | M |
| 001101 | N |
| 001110 | O |
| 001111 | P |
| 010000 | Q |
| 010001 | R |
| 010010 | S |
| 010011 | T |
| 010100 | U |
| 010101 | V |
| 010110 | W |
| 010111 | X |
| 011000 | Y |
| 011001 | Z |
| 011010 | a |
| 011011 | b |
| 011100 | c |
| 011101 | d |
| 011110 | e |
| 011111 | f |
| 100000 | g |
| 100001 | h |
| 100010 | i |
| 100011 | j |
| 100100 | k |
| 100101 | l |
| 100110 | m |
| 100111 | n |
| 101000 | o |
| 101001 | p |
| 101010 | q |
| 101011 | r |
| 101100 | s |
| 101101 | t |
| 101110 | u |
| 101111 | v |
| 110000 | w |
| 110001 | x |
| 110010 | y |
| 110011 | z |
| 110100 | 0 |
| 110101 | 1 |
| 110110 | 2 |
| 110111 | 3 |
| 111000 | 4 |
| 111001 | 5 |
| 111010 | 6 |
| 111011 | 7 |
| 111100 | 8 |
| 111101 | 9 |
| 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 |
| Signature | Dữ 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ường | Tên | Mô tả |
|---|---|---|
| alg | Algorithm | Thuật toán được sử dụng để ký hoặc mã hóa (ví dụ: HS256, RS256, ES256) |
| typ | Type | Loại token (thường là "JWT") |
| cty | Content Type | Loại nội dung của payload ("JWT" cho JWT lồng nhau) |
| kid | Key ID | Mã định danh của khóa được sử dụng để xác minh chữ ký |
| jku | JWK Set URL | URL tham chiếu JWK Set được sử dụng để xác minh chữ ký |
| x5u | X.509 URL | URL tham chiếu chuỗi chứng chỉ X.509 được sử dụng để xác minh chữ ký |
| x5t | X.509 Certificate SHA-1 Thumbprint | Dấu vân tay SHA-1 của chứng chỉ X.509 được sử dụng để xác minh chữ ký |
| Trường | Tên | Mô tả |
|---|---|---|
| iss | Issuer | Tổ chức phát hành token |
| sub | Subject | Chủ thể của token (ví dụ: ID người dùng) |
| aud | Audience | Người nhận token |
| exp | Expiration Time | Thời gian hết hạn của token (Unix timestamp) |
| nbf | Not Before | Thời gian trước đó token không hợp lệ (Unix timestamp) |
| iat | Issued At | Thời gian phát hành token (Unix timestamp) |
| jti | JWT ID | Mã định danh duy nhất của token |