Base64 là gì? Hướng dẫn mã hóa và giải mã Base64 đơn giản
Giải thích Base64 là gì, cách hoạt động, ứng dụng thực tế trong lập trình web, và cách mã hóa/giải mã Base64 online miễn phí không cần đăng ký.
Nếu bạn đã từng làm việc với API, xem source code email, hay nhúng ảnh trong CSS, bạn chắc chắn đã gặp Base64. Chuỗi ký tự dài ngoằng bắt đầu bằng "data:image/png;base64,iVBOR..." chính là Base64 trong thực tế.
Base64 là gì?
Base64 là một sơ đồ mã hóa (encoding scheme) chuyển đổi dữ liệu nhị phân hoặc văn bản thành chuỗi 64 ký tự ASCII in được. 64 ký tự đó gồm: A–Z (26 ký tự), a–z (26 ký tự), 0–9 (10 ký tự), dấu + và / (2 ký tự), và = để đệm (padding).
Quan trọng: Base64 là encoding (mã hóa biểu diễn), không phải encryption (mã hóa bảo mật). Bất kỳ ai cũng có thể giải mã Base64 ngay lập tức. Đừng dùng Base64 để bảo vệ thông tin nhạy cảm.
Tại sao Base64 tồn tại?
Vấn đề gốc rễ: nhiều giao thức truyền thông được thiết kế chỉ để xử lý văn bản thuần, không phải dữ liệu nhị phân tùy ý. Các giao thức như SMTP (email), HTTP headers, XML coi một số byte nhất định là ký tự điều khiển — nếu dữ liệu nhị phân chứa các byte đó, hệ thống sẽ bị lỗi.
Base64 giải quyết vấn đề này bằng cách ánh xạ mỗi nhóm 3 byte thành 4 ký tự ASCII in được. Kết quả dài hơn 33% nhưng đảm bảo an toàn trong bất kỳ môi trường văn bản nào.
Base64 hoạt động như thế nào?
- 1.Lấy 3 byte (24 bit) dữ liệu đầu vào
- 2.Chia thành 4 nhóm 6-bit
- 3.Ánh xạ mỗi nhóm 6-bit (giá trị 0–63) sang ký tự Base64 tương ứng
- 4.Nếu input không chia hết cho 3 byte, thêm ký tự = để đệm
Ví dụ mã hóa chữ "Hi":
- ▸"H" = ASCII 72 = nhị phân 01001000
- ▸"i" = ASCII 105 = nhị phân 01101001
- ▸Kết hợp và chia thành 4 nhóm 6-bit: 010010 000110 100100 (đệm)
- ▸Tra bảng → S, G, k, = → kết quả: "SGk="
5 ứng dụng thực tế của Base64
- ▸Đính kèm email (MIME encoding) — lý do gốc Base64 được tạo ra. Tệp nhị phân được mã hóa Base64 trước khi gửi qua SMTP
- ▸Data URI — nhúng ảnh trực tiếp trong CSS hoặc HTML: background-image: url("data:image/png;base64,..."). Giảm số lượng HTTP request
- ▸JSON payload — truyền dữ liệu nhị phân (ảnh, PDF) trong trường JSON mà không bị lỗi encoding
- ▸HTTP Basic Authentication — thông tin đăng nhập được mã hóa Base64 trong header Authorization: Basic dXNlcjpwYXNz
- ▸JWT (JSON Web Token) — phần header và payload của JWT là Base64url (biến thể của Base64 an toàn cho URL)
Sự khác biệt giữa Base64 và Base64url
Base64 chuẩn dùng ký tự + và /, vốn có ý nghĩa đặc biệt trong URL. Base64url là biến thể an toàn cho URL, thay thế + bằng - và / bằng _, đồng thời bỏ dấu = đệm. Bạn sẽ thấy Base64url trong JWT và nhiều API hiện đại.
Cách mã hóa/giải mã Base64 trong JavaScript
Trình duyệt hiện đại có sẵn hai hàm tích hợp:
- ▸btoa(chuỗi) — mã hóa chuỗi sang Base64
- ▸atob(chuỗi) — giải mã Base64 về văn bản gốc
Tuy nhiên với văn bản Unicode (tiếng Việt, tiếng Trung, emoji...), bạn cần hàm wrapper: btoa(unescape(encodeURIComponent(text))). Công cụ online của chúng tôi đã xử lý điều này tự động.
Cách mã hóa/giải mã Base64 online miễn phí
- 1.Mở công cụ Base64 Encoder / Decoder (link bên dưới)
- 2.Chọn chế độ Mã hóa hoặc Giải mã
- 3.Dán hoặc nhập văn bản vào ô đầu vào
- 4.Kết quả cập nhật ngay lập tức ở ô bên phải
- 5.Nhấn Sao chép hoặc Đổi chiều để đảo ngược thao tác
Frequently Asked Questions
Base64 có phải là mã hóa bảo mật không?▾
Tại sao kết quả Base64 đôi khi kết thúc bằng == hoặc =?▾
Base64 có hỗ trợ tiếng Việt không?▾
Base64 làm tăng kích thước file bao nhiêu?▾
Dán bất kỳ văn bản nào và nhận kết quả Base64 ngay lập tức — hoặc giải mã Base64 về văn bản gốc.
Mã hóa / Giải mã Base64 miễn phí →