Mã hóa Base64 là gì?
Base64 là một cơ chế mã hóa từ dữ liệu nhị phân sang văn bản, biểu diễn mọi dữ liệu byte chỉ bằng 64 ký tự ASCII có thể in được: A-Z, a-z, 0-9, cùng với + và /. Base64 được dùng rất phổ biến để nhúng hình ảnh trực tiếp vào HTML/CSS (data URI), gửi tệp đính kèm nhị phân qua email (MIME), trong JSON Web Token (JWT), và ở bất cứ đâu mà dữ liệu nhị phân cần được truyền an toàn qua một kênh chỉ chấp nhận văn bản. Công cụ này mã hóa bất kỳ đoạn văn bản nào bạn nhập — các byte UTF-8 được tính trước, sau đó mới đem đi mã hóa.
Cách sử dụng công cụ mã hóa
Hãy gõ hoặc dán văn bản của bạn vào ô nhập rồi bấm thực hiện. Công cụ sẽ chuyển văn bản thành các byte UTF-8, áp dụng thuật toán Base64 chuẩn và trả về chuỗi đã mã hóa kèm theo số byte đầu vào và số ký tự đầu ra.
Giải thích công thức
Bộ mã hóa đọc các byte đầu vào theo từng nhóm ba byte một. Ba byte tạo thành 24 bit, được chia đều thành bốn khối 6 bit. Mỗi giá trị 6 bit (từ 0 đến 63) tương ứng với một vị trí trong bảng ký tự, tạo ra một ký tự đầu ra. Khi độ dài đầu vào không chia hết cho 3, thuật toán sẽ thêm phần đệm (padding) vào nhóm cuối: nếu thừa một byte thì cho ra hai ký tự kèm ==, còn nếu thừa hai byte thì cho ra ba ký tự kèm một dấu =. Vì vậy độ dài đầu ra luôn bằng
$$\text{Base64} = \operatorname{encode}_{64}\!\left(\text{Text}\right), \qquad L_{out} = 4 \left\lceil \frac{L_{in}}{3} \right\rceil$$
Ví dụ minh họa
Hãy mã hóa văn bản Man. Các byte ASCII của nó là 77, 97, 110 → dạng nhị phân 01001101 01100001 01101110. Tách thành các khối 6 bit: 010011 = 19 → T, 010110 = 22 → W, 000101 = 5 → F, 101110 = 46 → u. Kết quả: TWFu — vào 3 byte, ra 4 ký tự, không cần phần đệm.
Câu hỏi thường gặp
Vì sao kết quả của tôi kết thúc bằng dấu = ? Phần đệm (padding) được thêm vào để bù đủ nhóm cuối khi đầu vào không phải là bội số của 3 byte, giúp độ dài đầu ra luôn là bội số của 4.
Base64 có mã hóa bảo mật dữ liệu của tôi không? Không. Base64 chỉ là mã hóa định dạng, không phải mã hóa bảo mật (encryption) — ai cũng có thể giải mã ngược lại. Nó chỉ giúp dữ liệu nhị phân được truyền đi an toàn dưới dạng văn bản.
Vì sao kết quả lớn hơn dữ liệu gốc? Base64 làm dữ liệu phình to thêm khoảng 33%, vì cứ mỗi 3 byte sẽ biến thành 4 ký tự.