Mã hóa Base64 là gì và khi nào sử dụng nó
Nếu bạn làm việc với API, hệ thống email hoặc phát triển web, bạn đã gặp phải Base64 — ngay cả khi không nhận ra nó. Những chuỗi dài chữ cái và chữ số trông như những từ vô nghĩa? Có lẽ đó là Base64.
Base64 làm gì
Base64 chuyển đổi dữ liệu nhị phân (bất kỳ chuỗi byte nào) thành một chuỗi văn bản chỉ sử dụng 64 ký tự « an toàn »: A-Z, a-z, 0-9, + và /. Kết quả luôn kết thúc bằng phần đệm = nếu cần.
Ví dụ:
- Văn bản:
Hello World - Base64:
SGVsbG8gV29ybGQ=
Mã hóa này tồn tại vì nhiều hệ thống (email, JSON, URL, XML) chỉ xử lý văn bản. Dữ liệu nhị phân — hình ảnh, tệp đã nén, byte thô — có thể chứa các ký tự phá vỡ các hệ thống này. Base64 chuyển nhị phân sang văn bản đi qua bất kỳ kênh văn bản nào mà không bị hỏng.
Sử dụng phổ biến
Tích hợp hình ảnh trong HTML/CSS:
<img src="data:image/png;base64,iVBORw0KGgoAAAA..." />
Các biểu tượng và logo nhỏ có thể được tích hợp trực tiếp vào HTML của bạn, loại bỏ một yêu cầu HTTP bổ sung.
Tải trọng API: khi một API mong đợi JSON nhưng cần bao gồm nhị phân (một tệp tải lên, một hình ảnh chữ ký), việc mã hóa nó thành Base64 cho phép bao gồm nó như một trường văn bản thông thường.
Tệp đính kèm email: các giao thức nhắn tin (SMTP) là dựa trên văn bản. Mỗi tệp đính kèm được mã hóa Base64 đằng sau hậu trường để di chuyển dưới dạng văn bản.
Tiêu đề xác thực: xác thực HTTP Basic mã hóa người_dùng:mật_khẩu trong Base64 trong tiêu đề Authorization. (Đó là mã hóa, không phải mã hóa bảo mật — nó không cung cấp bảo mật nào.)
Cách mã hóa và giải mã
- Chọn mã hóa hoặc giải mã — chọn hướng chuyển đổi.
- Dán văn bản hoặc tải lên tệp — nhập văn bản trực tiếp hoặc kéo và thả một tệp (đến 5 MB).
- Sao chép kết quả — đầu ra cập nhật tức thì. Sao chép nó vào bộ nhớ tạm.
Khi nào sử dụng Base64
Sử dụng khi:
- Bạn cần tích hợp một hình ảnh nhỏ (dưới 5 KB) trực tiếp vào HTML hoặc CSS
- Một API yêu cầu dữ liệu nhị phân dưới dạng chuỗi văn bản
- Bạn cần truyền nhị phân qua một hệ thống chỉ hỗ trợ văn bản
Không sử dụng khi:
- Tệp lớn — Base64 thêm 33% chi phí và ngăn việc lưu vào bộ nhớ đệm
- Bạn cần bảo mật — Base64 không phải là mã hóa bảo mật
- Bạn có thể phục vụ tệp bình thường — một
<img src="photo.jpg">cổ điển hiệu quả hơn một Data URL Base64 cho bất cứ thứ gì lớn hơn vài KB
Mẹo
- Chỉ tệp nhỏ — sự gia tăng 33% là quan trọng. Một hình ảnh 100 KB trở thành 133 KB ở Base64, và nó không thể được lưu vào bộ nhớ đệm riêng bởi trình duyệt.
- Đừng nhầm lẫn mã hóa với mã hóa bảo mật — Base64 hoàn toàn có thể đảo ngược bởi bất kỳ ai. Nó không cung cấp bảo mật. Sử dụng nó để vận chuyển dữ liệu, không phải để bảo vệ chúng.
- Cẩn thận với dấu xuống dòng — một số triển khai Base64 thêm một dấu xuống dòng mỗi 76 ký tự (theo tiêu chuẩn MIME). Nếu bạn dán Base64 vào JSON hoặc URL, hãy đảm bảo nó nằm trên một dòng duy nhất.
Câu hỏi thường gặp
Base64 có mã hóa bảo mật dữ liệu của tôi không?
Không. Base64 là một mã hóa, không phải mã hóa bảo mật. Bất kỳ ai cũng có thể giải mã một chuỗi Base64 — nó không cung cấp bảo mật nào. Nếu bạn muốn bảo vệ dữ liệu, hãy sử dụng mã hóa thực sự (AES, RSA, v.v.).
Tại sao Base64 làm cho các tệp nặng hơn?
Mã hóa Base64 tăng kích thước dữ liệu khoảng 33%. Ba byte nhị phân trở thành bốn ký tự Base64. Chi phí này là cái giá phải trả để có thể truyền nhị phân một cách an toàn dưới dạng văn bản.
Tôi có thể mã hóa các tệp, không chỉ văn bản không?
Có. Bất kỳ tệp nào (hình ảnh, PDF, âm thanh) đều có thể được mã hóa Base64. Điều này thường được sử dụng để tích hợp các hình ảnh nhỏ trực tiếp vào HTML hoặc CSS dưới dạng Data URL.
Khi nào KHÔNG sử dụng Base64?
Đừng sử dụng nó cho các tệp lớn. Một hình ảnh 1 MB trở thành 1,33 MB ở văn bản Base64, và trình duyệt không thể lưu nó vào bộ nhớ đệm riêng. Đối với bất cứ thứ gì lớn hơn vài KB, phục vụ tệp bình thường hiệu quả hơn.