Kết nối qua MCP →

Nhập phép tính

Công thức

Quảng cáo

Kết quả

Văn bản đã giải mã
Man
Số byte đã giải mã 3
Số ký tự đầu vào (không tính khoảng trắng) 4
Số ký tự đệm 0

Công cụ giải mã Base64 là gì?

Base64 là một phương thức mã hóa dùng 64 ký tự ASCII in được (A–Z, a–z, 0–9, dấu + và /) để biểu diễn dữ liệu nhị phân. Nó được dùng phổ biến để nhúng hình ảnh trực tiếp vào HTML, truyền dữ liệu trong JSON hay URL, và mã hóa tệp đính kèm email. Công cụ này làm điều ngược lại: chuyển một chuỗi Base64 trở về đúng văn bản gốc mà nó đại diện.

Cách sử dụng

Dán hoặc gõ chuỗi Base64 của bạn vào ô nhập rồi nhấn gửi. Công cụ sẽ loại bỏ mọi khoảng trắng, giải mã các ký tự, rồi hiển thị kết quả văn bản cùng với số byte đã giải mã, số ký tự đầu vào và số ký tự đệm ('=') có trong chuỗi. Nếu đầu vào chứa ký tự nằm ngoài bảng chữ cái Base64, bạn sẽ nhận được thông báo "không hợp lệ".

Giải thích công thức

Mỗi ký tự Base64 mã hóa 6 bit dữ liệu. Vì vậy bốn ký tự Base64 mang 4 × 6 = 24 bit, và 24 bit này được gom gọn thành ba byte 8 bit. Khi độ dài dữ liệu gốc không chia hết cho 3, một hoặc hai ký tự đệm '=' sẽ được thêm vào để độ dài chuỗi mã hóa luôn là bội số của 4. Khi giải mã, phần ký tự đệm bị loại bỏ và các bit thừa được bỏ qua.

$$\text{Bytes} = \left\lfloor \frac{6 \times \text{Base64 chars (no padding)}}{8} \right\rfloor$$$$\begin{gathered} \text{Bytes} = \left\lfloor \frac{6N}{8} \right\rfloor \\[1.5em] \text{where}\quad \left\{ \begin{aligned} N &= \text{valid chars of } \text{Base64 Input} \\ &\quad \text{(whitespace and } = \text{ removed)} \\ \text{char} &\to 6\text{ bits},\; 8\text{ bits} \to 1\text{ byte} \end{aligned} \right. \end{gathered}$$
Bốn ký tự Base64 mỗi ký tự 6 bit được nhóm lại thành ba byte 8 bit
Bốn ký tự Base64 chứa 24 bit, được nhóm lại thành ba byte đã giải mã.

Ví dụ minh họa

Lấy chuỗi Base64 SGk=. Các ký tự ánh xạ thành giá trị S=18, G=6, k=36, còn '=' là ký tự đệm. Ở dạng nhị phân: 010010 000110 100100 → 24 bit, nhưng vì có ký tự đệm ở cuối nên chỉ 2 byte là hợp lệ: 01001000 (72 = 'H') và 01101001 (105 = 'i'). Kết quả là Hi.

Quy trình hiển thị chuỗi Base64 được chuyển qua các bit thành văn bản thuần
Bộ giải mã chuyển chuỗi Base64 trở lại văn bản gốc.

Tham Chiếu Bảng Chữ Base64

Base64 tiêu chuẩn (RFC 4648) ánh xạ mỗi giá trị 6-bit (0–63) thành một trong 64 ký tự ASCII có thể in. Bộ giải mã đọc từng ký tự, tìm kiếm chỉ số 6-bit của nó trong bảng này, nối các bit lại, và sắp xếp chúng thành các byte 8-bit. Bảng dưới đây liệt kê toàn bộ bảng chữ và chỉ số được gán cho mỗi ký tự.

Chỉ số Ký tự Chỉ số Ký tự Chỉ số Ký tự Chỉ số Ký tự
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
2 C 18 S 34 i 50 y
3 D 19 T 35 j 51 z
4 E 20 U 36 k 52 0
5 F 21 V 37 l 53 1
6 G 22 W 38 m 54 2
7 H 23 X 39 n 55 3
8 I 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 26 a 42 q 58 6
11 L 27 b 43 r 59 7
12 M 28 c 44 s 60 8
13 N 29 d 45 t 61 9
14 O 30 e 46 u 62 +
15 P 31 f 47 v 63 /

Ký hiệu thứ 65, = (dấu bằng), không phải là ký tự dữ liệu. Nó là điểm đánh dấu đệm được sử dụng ở cuối chuỗi được mã hóa để tổng độ dài luôn là bội số của 4 ký tự. Một = có nghĩa là nhóm 4 ký tự cuối cùng mã hóa 2 byte; hai == có nghĩa là nó mã hóa 1 byte. Bộ giải mã loại bỏ đệm và các bit zero thêm vào mà nó ám chỉ.

Thêm Ví Dụ Giải Mã

Mỗi ký tự Base64 đóng góp 6 bit. Bốn ký tự (24 bit) giải mã thành chính xác 3 byte; các nhóm một phần sử dụng đệm để bộ giải mã biết cần giữ bao nhiêu byte. Số lượng byte tuân theo \(\text{Byte} = \left\lfloor \frac{6 \times n}{8} \right\rfloor\), trong đó \(n\) là số lượng ký tự thực (không phải đệm).

Ví Dụ 1 — Không có đệm: "TWFu" → "Man"

  1. Chỉ số: T=19, W=22, F=5, u=46.
  2. Nhóm 6-bit: 010011 010110 000101 101110.
  3. Sắp xếp lại thành byte: 01001101 01100001 01101110 = 77, 97, 110.
  4. ASCII 77, 97, 110 = M, a, n. Với \(n=4\): \(\lfloor 24/8 \rfloor = 3\) byte — Man.

Ví Dụ 2 — Một đệm '=': "SGVsbG8=" → "Hello"

  1. Bỏ đệm: 7 ký tự thực S,G,V,s,b,G,8.
  2. Chỉ số: S=18, G=6, V=21, s=44, b=27, G=6, 8=60.
  3. Bit: 010010 000110 010101 101100 011011 000110 111100 (2 bit cuối cùng từ nhóm đệm là zero và bị loại bỏ).
  4. Byte: 01001000 01100101 01101100 01101100 01101111 = 72, 101, 108, 108, 111 = H, e, l, l, o.
  5. Với \(n=7\): \(\lfloor 42/8 \rfloor = 5\) byte — Hello.

Ví Dụ 3 — Hai đệm '==': "aGk="... và "TQ==" → "M"

  1. Bỏ đệm: 2 ký tự thực T, Q.
  2. Chỉ số: T=19, Q=16.
  3. Bit: 010011 010000; chỉ giữ 8 bit đầu tiên, 4 bit còn lại là zero.
  4. Byte: 01001101 = 77 = M.
  5. Với \(n=2\): \(\lfloor 12/8 \rfloor = 1\) byte — M.

Để đi theo hướng khác và tạo ra những chuỗi này từ văn bản, sử dụng Bộ mã hóa Base64.

Các Thuật Ngữ Chính

Bảng chữ Base64
Tập hợp cố định 64 ký tự có thể in (A–Z, a–z, 0–9, + và /) được sử dụng để biểu diễn dữ liệu nhị phân dưới dạng văn bản. Mỗi ký tự đại diện cho giá trị 6-bit từ 0 đến 63.
Đệm ('=')
Dấu bằng được thêm vào cuối chuỗi được mã hóa để độ dài của nó là bội số của 4 ký tự. Nó không mang dữ liệu; một '=' đánh dấu nhóm cuối cùng 2-byte và '==' đánh dấu nhóm cuối cùng 1-byte.
Sextet (6 bit)
Một nhóm 6 bit — đơn vị mà một ký tự Base64 duy nhất mã hóa. Bốn sextets (24 bit) sắp xếp chính xác với ba octets.
Octet / byte (8 bit)
Một đơn vị 8-bit, kích thước tiêu chuẩn của một byte dữ liệu được giải mã. Giải mã Base64 sắp xếp lại sextets trở lại octets, mà công cụ chuyển đổi Nhị phân sang Văn bản cũng có thể minh họa từng bit.
Loại bỏ khoảng trắng
Loại bỏ dấu cách, tab và ngắt dòng trước khi giải mã. Nhiều hệ thống chèn dòng mới vào Base64 dài (ví dụ: chứng chỉ PEM, email MIME); bộ giải mã mạnh mẽ bỏ qua khoảng trắng này thay vì coi nó là dữ liệu.
Base64 an toàn cho URL
Một biến thể (RFC 4648 §5) thay thế + bằng - và / bằng _ để chuỗi an toàn trong URL và tên tệp. Đệm thường bị bỏ qua cũng vậy. Chuyển đổi các ký tự đó trở lại + và / trước khi sử dụng bộ giải mã tiêu chuẩn; đối với URL xung quanh, xem Máy tính Mã hóa / Giải mã URL.

Câu hỏi thường gặp

Dữ liệu của tôi có bị gửi đi đâu không? Phần xử lý giải mã chạy trên máy chủ để hiển thị kết quả, nhưng không lưu lại bất kỳ nội dung nhập nào. Dù vậy, hãy tránh dán các thông tin nhạy cảm hay bí mật.

Vì sao số byte không chia hết cho 4? Số byte ở đây là byte đầu ra sau khi giải mã, không phải số ký tự đầu vào. Cứ mỗi 4 ký tự đầu vào sẽ tạo ra tối đa 3 byte đầu ra.

Ký tự đệm có ý nghĩa gì? Một dấu '=' nghĩa là nhóm cuối cùng tạo ra 2 byte; hai dấu '=' nghĩa là nhóm đó chỉ tạo ra 1 byte. Không có ký tự đệm nghĩa là độ dài dữ liệu vốn đã là bội số của 3.

Cập nhật lần cuối: