- Base64 Encoding giải bài toán gì?
- Bảng ký tự Base64
- Base64 có phải mã hóa bảo mật không?
- Demo: Mã hóa – giải mã Base64 (UIkit + JavaScript)
- Demo: Base64 Encoding / Decoding
- Base64 hoạt động thế nào? (mô tả đơn giản)
- Ví dụ nhanh
- Code chính dùng atob() & btoa()
- Khi nào dùng Base64?
- Khi nào không nên dùng Base64?
- Kết luận
Base64 xuất hiện ở khắp nơi: token đăng nhập, JWT, ảnh nhúng base64 trong HTML/CSS, API, email MIME… Trong bài này, bạn sẽ hiểu Base64 là gì, cách hoạt động và thử ngay một demo mã hóa – giải mã trực tiếp bằng UIkit + JavaScript.
Base64 Encoding giải bài toán gì?
Bài toán:
- Nhiều hệ thống mạng cũ hoặc giao thức text-base không cho phép gửi byte tùy ý.
- Cần chuyển dữ liệu nhị phân → thành chuỗi an toàn, chỉ chứa chữ cái, số và dấu + / =.
Base64 giải quyết bằng việc:
- Nhóm 3 byte → thành 4 block 6-bit.
- Chuyển mỗi block 6-bit → thành một ký tự trong bảng Base64 (tổng 64 ký tự).
Nhờ đó dữ liệu có thể được truyền qua:
- URL
- Cookie, Token
- API, JSON
- Email MIME
- HTML/CSS (ảnh base64)
Bảng ký tự Base64
Base64 có tổng 64 ký tự:
A–Z (26)
a–z (26)
0–9 (10)
+ /
= dùng để padding
Base64 có phải mã hóa bảo mật không?
Không! Base64 chỉ là mã hóa biểu diễn (encoding). Bất kỳ ai cũng có thể decode ngược lại.
Nếu bạn lưu mật khẩu dạng Base64 → xem như mật khẩu để trần, vô tác dụng bảo mật.
Demo: Mã hóa – giải mã Base64 (UIkit + JavaScript)
Demo dưới đây cho phép bạn:
- Nhập văn bản bất kỳ.
- Mã hóa → Base64.
- Giải mã ← Base64.
- Hiển thị log từng bước chuyển đổi (cho vui 😎).
Demo: Base64 Encoding / Decoding
Kết quả
Log
Base64 hoạt động thế nào? (mô tả đơn giản)
- Chuỗi được chuyển sang dạng bytes (UTF-8).
- Cứ mỗi 3 byte (24 bit):
- Chia thành 4 nhóm 6-bit.
- Ánh xạ từng nhóm vào bảng Base64.
- Nếu số byte không chia hết cho 3 → thêm dấu
=để padding.
Khi decode Base64 → chỉ cần làm ngược lại.
Ví dụ nhanh
"Hi" → 2 ký tự → 2 byte
48 69 (hex)
Nhóm bit → ánh xạ Base64
"SGk="
Code chính dùng atob() & btoa()
function base64Encode(str) {
return btoa(unescape(encodeURIComponent(str)));
}
function base64Decode(b64) {
return decodeURIComponent(escape(atob(b64)));
}
Khi nào dùng Base64?
- Chuyển ảnh → Base64 để nhúng vào CSS/HTML.
- Mã hóa dữ liệu nhị phân để gửi qua API.
- Tạo token (không bảo mật, chỉ encode).
- Email MIME.
Khi nào không nên dùng Base64?
- Không dùng để mã hóa bảo mật.
- Không dùng để lưu mật khẩu.
- Không giúp dữ liệu nhỏ hơn (Base64 tăng ~33%).
Kết luận
Base64 cực kỳ phổ biến trong lập trình và truyền dữ liệu hiện đại. Nắm được cách hoạt động và biết rằng nó không phải phương pháp bảo mật là điều rất quan trọng.
Trong bài tiếp theo của series “Thuật toán mã hóa & bảo mật cơ bản”, chúng ta sẽ xem Demo AES Concept – minh họa các bước SubBytes, ShiftRows, MixColumns cực dễ hiểu.
Bình luận