Cách dùng Mã hóa / Giải mã Base64
- Chọn Mã hóa để chuyển văn bản thành Base64, hoặc Giải mã để chuyển Base64 về văn bản.
- Nhập hoặc dán nội dung vào ô bên trái — kết quả cập nhật ngay lập tức. Nếu dán Base64 ở chế độ Mã hóa, công cụ sẽ gợi ý chuyển sang Giải mã.
- Đánh dấu An toàn URL khi làm việc với token và URL (dùng
-và_thay cho+và/, không có ký tự đệm). - Để mã hóa tệp, kéo thả tệp vào vùng tải tệp; dùng Sao chép dưới dạng data URI để nhúng vào HTML hoặc CSS.
- Nếu dữ liệu giải mã là nhị phân (hình ảnh, PDF…), bạn sẽ thấy bản xem trước và nút Tải tệp xuống.
Base64 là gì?
Base64 là một cách mã hóa biểu diễn dữ liệu nhị phân chỉ bằng 64 ký tự ASCII có thể in được: A–Z, a–z, 0–9, + và /, với = dùng làm ký tự đệm. Mục đích của nó là giúp các byte bất kỳ — hình ảnh, khóa, dữ liệu nén — có thể đi qua các hệ thống được thiết kế cho văn bản, như email (MIME), payload JSON, thuộc tính HTML, header HTTP và biến môi trường. Base64 không phải là mã hóa bảo mật: ai cũng có thể giải mã, vì vậy đừng dùng nó để che giấu mật khẩu hay bí mật.
Cách hoạt động của mã hóa Base64
Bộ mã hóa lấy đầu vào từng nhóm ba byte (24 bit) và chia thành bốn nhóm 6 bit. Mỗi giá trị 6 bit (0–63) được ánh xạ thành một ký tự trong bảng chữ cái. Ví dụ, văn bản Man gồm các byte 4D 61 6E, tương ứng các giá trị 6 bit 19, 22, 5, 46 → TWFu. Khi độ dài đầu vào không chia hết cho ba, đầu ra sẽ được thêm một hoặc hai dấu =. Do đó, kết quả Base64 luôn lớn hơn bản gốc khoảng 33% (cứ 3 byte thành 4 ký tự).
UTF-8 và vấn đề của “btoa”
Base64 mã hóa byte chứ không phải ký tự, nên văn bản cần được chuyển sang byte trước. Công cụ này luôn dùng UTF-8, bảng mã tiêu chuẩn của web. Điều này rất quan trọng: hàm btoa("é") có sẵn trong JavaScript cho kết quả 6Q== (Latin-1), trong khi UTF-8 cho w6k=, còn btoa("👋") thì báo lỗi. Nếu chuỗi giải mã hiện ký tự lỗi kiểu é, nhiều khả năng dữ liệu gốc được mã hóa bằng bảng mã khác.
Base64 chuẩn so với Base64URL
| Chuẩn (RFC 4648 §4) | An toàn URL (RFC 4648 §5) | |
|---|---|---|
| Ký tự 62 và 63 | + và / | - và _ |
| Ký tự đệm | Bắt buộc = | Thường được bỏ qua |
| Được dùng trong | Email MIME, data URI, khóa PEM, Basic Auth | JWT, tham số URL, tên tệp |
Bộ giải mã chấp nhận cả hai biến thể, có hoặc không có ký tự đệm và có ngắt dòng, nên bạn có thể dán giá trị từ bất kỳ nguồn nào — kể cả các URI đầy đủ dạng data:image/png;base64,….
Các ứng dụng phổ biến
- Data URI — nhúng icon nhỏ trực tiếp vào CSS hoặc HTML (xem thêm công cụ Hình ảnh sang Base64).
- HTTP Basic Auth — header có dạng
Basic+ Base64 củauser:password. - JWT — phần header và payload là JSON được mã hóa Base64URL; bạn có thể kiểm tra bằng JWT Decoder.
- Secret của Kubernetes — các giá trị trong manifest Secret được mã hóa Base64.
Cũng được tìm dưới tên: mã hóa base64, giải mã base64, base64 sang text, chuyển text sang base64, base64url, file sang base64, atob, btoa.
Các công cụ dùng kèm tốt với Mã hóa / Giải mã Base64
- Mã hóa / Giải mã URL — Mã hóa văn bản để dùng an toàn trong URL, giải mã chuỗi đã mã hóa về dạng dễ đọc và tách mọi URL thành các phần cùng tham số truy vấn.
- Mã hóa HTML Entity — Escape < > & " để văn bản hiển thị an toàn trong HTML, chuyển dấu và ký hiệu sang entity dạng tên hoặc số, hoặc giải mã HTML chứa entity về văn bản thuần.
- Dịch Mã Morse — Nhập văn bản để có mã Morse, hoặc dán chấm và gạch để giải mã.
- Chuyển văn bản sang nhị phân — Nhập văn bản để xem dưới dạng mã nhị phân, hoặc dán chuỗi nhị phân (hoặc hex, bát phân, thập phân) để dịch ngược lại thành văn bản dễ đọc.
Câu hỏi thường gặp
Base64 có phải là mã hóa bảo mật không?
Vì sao văn bản sau khi giải mã bị lỗi ký tự?
Vì sao kết quả Base64 dài hơn dữ liệu đầu vào?
Dấu = ở cuối có ý nghĩa gì?
= nghĩa là nhóm cuối có 2 byte, hai dấu == nghĩa là nhóm cuối có 1 byte. Base64 an toàn URL thường bỏ ký tự đệm; bộ giải mã này xử lý được cả hai trường hợp.