Base64 trong một câu
Base64 là phương pháp mã hóa dữ liệu nhị phân thành văn bản, được định nghĩa trong RFC 4648, biểu diễn mỗi 3 byte dữ liệu bằng 4 ký tự thuộc bảng chữ cái A–Z, a–z, 0–9, + và /.
Vì sao Base64 ra đời
Nhiều hệ thống được thiết kế chỉ để xử lý văn bản: email (SMTP), JSON, XML, thuộc tính HTML, URL và terminal. Dữ liệu nhị phân thô như ảnh hay PDF có thể chứa những byte mà các hệ thống này sẽ làm sai lệch hoặc từ chối. Base64 chuyển dữ liệu thành các ký tự in được an toàn, nhờ đó dữ liệu đến nơi nguyên vẹn.
Cách mã hóa Base64 hoạt động, từng bước một
- Lấy các byte đầu vào:
M,a,n= 77, 97, 110. - Viết chúng dưới dạng 24 bit:
01001101 01100001 01101110. - Chia các bit thành bốn nhóm 6 bit:
010011 010110 000101 101110= 19, 22, 5, 46. - Tra từng số trong bảng chữ cái: 19 =
T, 22 =W, 5 =F, 46 =u.
Như vậy, Man trở thành TWFu. Giải mã Base64 đơn giản là thực hiện ngược lại các bước trên.
Bảng chữ cái Base64
| Giá trị | Ký tự |
|---|---|
| 0–25 | A–Z |
| 26–51 | a–z |
| 52–61 | 0–9 |
| 62 | + (an toàn cho URL: -) |
| 63 | / (an toàn cho URL: _) |
| phần đệm | = |
Ý nghĩa của phần đệm =
Khi độ dài đầu vào không chia hết cho 3, nhóm cuối cùng sẽ được lấp đầy và đánh dấu bằng =: Ma trở thành TWE= và M trở thành TQ==. Phần đệm không bao giờ xuất hiện ở giữa một chuỗi hợp lệ.
Các biến thể của Base64
- Base64 chuẩn (RFC 4648) – dùng bảng chữ cái ở trên kèm phần đệm
=. - Base64URL – dùng
-và_, thường không có phần đệm; được dùng trong URL, tên file và JWT. - MIME Base64 – bảng chữ cái chuẩn, xuống dòng sau mỗi 76 ký tự, được dùng trong email.
Base64 không phải là mã hóa bảo mật
Base64 không che giấu điều gì: bất kỳ ai cũng có thể giải mã ngay lập tức. Nhiều người lầm tưởng đây là một hình thức bảo vệ vì kết quả trông như chuỗi ký tự ngẫu nhiên. Hãy dùng thuật toán mã hóa thực sự như AES cho dữ liệu bí mật, và chỉ dùng Base64 để truyền các byte đã mã hóa dưới dạng văn bản.
Dung lượng tăng thêm
Độ dài sau khi mã hóa là 4 × ⌈n / 3⌉ ký tự với n byte, tức nhiều hơn bản gốc khoảng 33%. Nếu có xuống dòng kiểu MIME, dung lượng còn tăng thêm 2–3%.
Base64 được dùng ở đâu?
- File đính kèm email (MIME)
- Data URI cho ảnh và font chữ trong HTML, CSS
- Các trường nhị phân trong API JSON và XML
- JSON Web Token và OAuth
- Header xác thực HTTP Basic
- Chứng chỉ PEM và khóa SSH
- Kubernetes secret và file cấu hình
Câu hỏi thường gặp
Base64 có giống mã hóa bảo mật hay hàm băm không?
Không. Dữ liệu mã hóa bảo mật cần có khóa mới giải được, hàm băm (hash) thì hoàn toàn không thể đảo ngược, còn Base64 thì ai cũng giải mã được.
Vì sao lại gọi là Base64?
Vì nó dùng bảng chữ cái gồm 64 ký tự, nên mỗi ký tự mang 6 bit thông tin (26 = 64).
Làm sao biết một chuỗi có phải Base64 không?
Chuỗi Base64 chỉ chứa A–Z, a–z, 0–9, +, / (hoặc - và _), độ dài thường là bội số của 4 và có thể kết thúc bằng một hoặc hai dấu =. Cách kiểm tra nhanh nhất là dán chuỗi vào công cụ giải mã Base64 của chúng tôi.
Cập nhật lần cuối: