Cách sử dụng
- Chọn Mã hóa hoặc Giải mã ở phía trên công cụ.
- Nhập hoặc dán văn bản, hoặc nhấp Mở tệp để mã hóa một tệp bất kỳ.
- Khi cần, hãy điều chỉnh Biến thể (tiêu chuẩn hoặc an toàn cho URL), Phần đệm, Ngắt dòng hoặc Bảng mã. Kết quả được cập nhật ngay khi bạn gõ.
- Nhấn Sao chép hoặc Tải xuống để lấy kết quả, hoặc nhấn nút Hoán đổi đầu vào và đầu ra để xử lý kết quả theo chiều ngược lại.
Base64 là gì?
Base64 là kiểu mã hóa nhị phân sang văn bản, biểu diễn mọi chuỗi byte bằng 64 ký tự ASCII in được: A-Z, a-z, 0-9, + và /, cùng ký tự = dùng để đệm. Nhờ đó, dữ liệu nhị phân như hình ảnh, khóa hay tệp nén có thể đi qua an toàn những hệ thống vốn được thiết kế cho văn bản, chẳng hạn email, JSON, XML, URL và HTML.
Bộ mã hóa đọc dữ liệu đầu vào theo từng nhóm ba byte (24 bit) và chia thành bốn nhóm 6 bit. Mỗi giá trị 6 bit, từ 0 đến 63, ứng với một ký tự trong bảng ký tự. Khi độ dài đầu vào không phải bội số của ba, nhóm cuối được đệm thêm một hoặc hai dấu =. Vì vậy, đầu ra Base64 luôn lớn hơn dữ liệu gốc khoảng 33%.
Base64 là một cách mã hóa dữ liệu (encoding), không phải mã hóa bảo mật (encryption). Ai cũng có thể giải mã nó, vì vậy đừng bao giờ dùng Base64 để che giấu mật khẩu hay thông tin bí mật.
Base64 và Base64URL
Base64 tiêu chuẩn dùng + và /, hai ký tự có ý nghĩa đặc biệt trong URL và tên tệp. Base64URL, được định nghĩa trong RFC 4648 mục 5, thay chúng bằng - và _ và thường lược bỏ phần đệm. Biến thể này được dùng trong JSON Web Token, OAuth và bất cứ nơi nào giá trị phải nằm trong URL. Bộ giải mã trên trang này tự động chấp nhận cả hai dạng.
| Base64 tiêu chuẩn | Base64URL | |
|---|---|---|
| Ký tự ứng với giá trị 62 và 63 | + / | - _ |
| Phần đệm | Bắt buộc có = | Tùy chọn, thường được lược bỏ |
| An toàn trong URL và tên tệp | Không | Có |
| Ứng dụng điển hình | Email (MIME), data URI, JSON, khóa PEM | JWT, OAuth, tham số URL |
Các ứng dụng phổ biến của Base64
- Tệp đính kèm email. MIME mã hóa tệp đính kèm thành Base64 và ngắt dòng sau mỗi 76 ký tự. Dùng tùy chọn Ngắt dòng để tạo đúng định dạng này.
- Nhúng hình ảnh và tệp. Data URI đưa hình ảnh nhỏ, phông chữ hoặc biểu tượng trực tiếp vào HTML và CSS. Xem Ảnh sang Base64 và Base64 sang ảnh.
- API và cấu hình. JSON không có kiểu dữ liệu nhị phân, nên các API gửi tệp, chữ ký và khóa dưới dạng chuỗi Base64. Kubernetes Secret cũng lưu giá trị ở dạng Base64.
- Xác thực. Cơ chế xác thực HTTP Basic gửi
username:passwordở dạng Base64, còn JSON Web Token gồm ba đoạn Base64URL. - Chứng chỉ và khóa. Tệp PEM là dữ liệu DER được mã hóa Base64, ngắt dòng sau mỗi 64 ký tự.
Base64 trong các ngôn ngữ lập trình
| Ngôn ngữ | Mã hóa | Giải mã |
|---|---|---|
| JavaScript (trình duyệt) | btoa(binaryString) | atob(base64) |
| Node.js | Buffer.from(str).toString('base64') | Buffer.from(b64, 'base64').toString() |
| Python | base64.b64encode(data) | base64.b64decode(data) |
| PHP | base64_encode($str) | base64_decode($b64) |
| Java | Base64.getEncoder().encodeToString(bytes) | Base64.getDecoder().decode(b64) |
| C# | Convert.ToBase64String(bytes) | Convert.FromBase64String(b64) |
| Go | base64.StdEncoding.EncodeToString(b) | base64.StdEncoding.DecodeString(s) |
| Shell | base64 file.bin | base64 -d file.txt |
Trong trình duyệt, btoa chỉ chấp nhận ký tự đến U+00FF. Để mã hóa văn bản Unicode (chẳng hạn tiếng Việt có dấu), trước tiên hãy chuyển nó thành các byte UTF-8, ví dụ bằng TextEncoder, hoặc dùng công cụ này, vốn mặc định mã hóa văn bản theo UTF-8.
Không chỉ có Base64
Base64.is còn hỗ trợ các thành viên khác trong họ Base-N: Base32, Base58, Base62, Base85, Ascii85, basE91, Base45, hex và nhị phân. Nếu không chắc một chuỗi dùng kiểu mã hóa nào, hãy thử công cụ nhận dạng mã hóa, hoặc so sánh tất cả cùng lúc với Tất cả kiểu mã hóa.
Đặc tả
| Bảng ký tự | A-Z a-z 0-9 + / |
|---|---|
| Kích thước đầu ra | 4 ký tự cho mỗi 3 byte (khoảng 133%) |
| Phần đệm | Thêm = cho đủ bội số của 4 ký tự |
| Tiêu chuẩn | RFC 4648, mục 4 |
| Phân biệt hoa thường | Có |
Ví dụ
| Đầu vào (UTF-8) | Đầu ra |
|---|---|
Hello, World! | SGVsbG8sIFdvcmxkIQ== |
Base64.is | QmFzZTY0Lmlz |
你好 | 5L2g5aW9 |
Câu hỏi thường gặp
Dữ liệu của tôi có bị tải lên máy chủ không?
Không. Việc mã hóa và giải mã diễn ra hoàn toàn trong trình duyệt của bạn bằng JavaScript. Văn bản và tệp bạn nhập không bao giờ rời khỏi thiết bị, và công cụ vẫn hoạt động khi ngoại tuyến sau khi trang đã tải xong.
Vì sao văn bản sau khi giải mã bị lỗi ký tự?
Các dấu bằng ở cuối chuỗi có ý nghĩa gì?
Đó là phần đệm. Base64 hoạt động theo từng khối bốn ký tự, và dấu = lấp đầy khối cuối cùng khi độ dài đầu vào không phải bội số của ba byte. Một dấu = nghĩa là khối cuối mã hóa hai byte, hai dấu = nghĩa là khối cuối chỉ mã hóa một byte.
Dữ liệu tăng kích thước bao nhiêu sau khi mã hóa?
Base64 biến mỗi 3 byte thành 4 ký tự, nên đầu ra lớn hơn đầu vào khoảng 33%, chưa kể các ký tự xuống dòng nếu bạn bật ngắt dòng.
Base64 có phải là một hình thức mã hóa bảo mật không?
Không. Base64 chỉ thay đổi cách biểu diễn dữ liệu. Nó không có khóa và ai cũng có thể giải mã, vì vậy hãy dùng mã hóa bảo mật thực sự như AES hoặc TLS để bảo vệ thông tin nhạy cảm.