Giải mã một cụm từ đơn giản
SGVsbG8gV29ybGQ=
Hello World
Dấu = ở cuối là ký tự đệm vì Hello World dài 11 byte, không chia hết cho 3. Khi giải mã, ký tự này luôn được loại bỏ chính xác.
Mã hóa hoặc giải mã chuỗi và tệp Base64 ngay lập tức.
Cập nhật lần cuối
Coddy dạy bạn bằng cách viết code thật ngay trên trình duyệt: bài học tương tác, phản hồi tức thì và AI hỗ trợ khi bạn bị kẹt.
Base64 là một cơ chế mã hóa biểu diễn dữ liệu nhị phân bằng 64 ký tự in được. Lập trình viên dùng nó mỗi khi một hệ thống chỉ hỗ trợ văn bản cần chở theo các byte: ảnh nhỏ nhúng trong HTML, token, tệp đính kèm email, data URL, chuỗi bí mật dán trong log và các trường JSON chứa dữ liệu nhị phân.
Base64 là *mã hóa dạng biểu diễn* (encoding), không phải mã hóa bảo mật (encryption). Giải mã một chuỗi Base64 thường cho ra nội dung gốc ngay lập tức, nên đừng bao giờ coi nó là một lớp bảo mật. Mọi thứ nằm trong Base64 về cơ bản là công khai, trừ khi đã được mã hóa bảo mật *trước khi* chuyển sang Base64.
Bên dưới, Base64 lấy 3 byte (24 bit) và viết lại thành 4 ký tự thuộc một bảng chữ cái cố định 64 ký tự (từ A đến Z, từ a đến z, từ 0 đến 9, +, /). Khi độ dài đầu vào không chia hết cho 3, bộ mã hóa thêm một hoặc hai ký tự = ở cuối để đệm (padding). Đó là lý do chuỗi Base64 thường kết thúc bằng =.
= hoàn thiện nhóm 4 ký tự cuối cùng và xuất hiện bình thường trong nhiều chuỗi Base64.+ và /) và Base64URL (dùng - và _ để an toàn trong URL và JWT).Chọn Mã hóa nếu bạn có văn bản thường hoặc một tệp và muốn nhận kết quả Base64. Chọn Giải mã nếu bạn có chuỗi Base64 và muốn lấy lại nội dung gốc.
Dán một chuỗi vào ô văn bản, hoặc kéo một tệp (ảnh, PDF, bất cứ thứ gì) vào vùng thả tệp. Tệp được chuyển thành data: URL, sẵn sàng nhúng vào HTML hoặc CSS.
Kết quả mã hóa là chuỗi Base64. Kết quả giải mã là văn bản gốc, hoặc nếu đầu vào là một tệp thì các byte khôi phục được hiển thị dưới dạng liên kết tải xuống.
Nhấn nút sao chép để đưa kết quả vào bộ nhớ tạm. Mọi thứ chạy trong trình duyệt, nên dữ liệu của bạn không bao giờ rời khỏi máy.
Những thành phần bạn sẽ gặp lại liên tục khi làm việc với Base64, theo định nghĩa của RFC 4648.
| Thành phần | Ý nghĩa | Ví dụ |
|---|---|---|
| Bảng chữ cái | 64 ký tự mà Base64 chuẩn sử dụng | A–Z, a–z, 0–9, +, / |
| Bảng chữ cái an toàn cho URL | Dùng trong JWT và URL | A–Z, a–z, 0–9, -, _ |
| Ký tự đệm | Đệm nhóm cuối khi độ dài không chia hết cho 3 | = hoặc == |
| Kích thước nhóm | Số byte mỗi khối mã hóa → 4 ký tự đầu ra | 3 byte → 4 ký tự |
| Độ dài tăng thêm | Đầu ra lớn hơn đầu vào khoảng 33% | 100 B → 136 ký tự |
| Data URL | Nhúng tệp trực tiếp vào HTML/CSS | data:image/png;base64,... |
SGVsbG8gV29ybGQ=
Hello World
Dấu = ở cuối là ký tự đệm vì Hello World dài 11 byte, không chia hết cho 3. Khi giải mã, ký tự này luôn được loại bỏ chính xác.
{"role":"student","active":true}eyJyb2xlIjoic3R1ZGVudCIsImFjdGl2ZSI6dHJ1ZX0=
Token JWT mã hóa từng phần đúng như thế này. Vì vậy payload JWT thường bắt đầu bằng eyJ, chính là dạng Base64 của {".
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNgAAIAAAUAAen8GVAAAAAASUVORK5CYII=
Phần tiền tố khai báo kiểu dữ liệu (image/png) và cách mã hóa (base64). Mọi thứ sau dấu phẩy là nội dung tệp. Rất hữu ích cho ảnh siêu nhỏ cần tải cùng trang.
Pj4/Pyc+Pg==
Pj4_Pyc-Pg
Base64 an toàn cho URL thay + bằng - và / bằng _, nhờ đó giá trị có thể nằm trong URL mà không cần escape thêm. JWT dùng biến thể này.
= rồi đưa kết quả vào một bộ giải mã nghiêm ngặt vốn cần ký tự đó. (Bộ giải mã an toàn cho URL thường chấp nhận thiếu ký tự đệm, còn bộ giải mã chuẩn thì có thể không.)Base64 là cách mã hóa biểu diễn dữ liệu nhị phân thành văn bản in được bằng bảng chữ cái 64 ký tự. Nó được dùng ở bất cứ đâu cần truyền byte qua một hệ thống chỉ hỗ trợ văn bản: API, JSON, JWT, email, data URL.
= được thêm vào để đệm.atob() trong trình duyệt, Buffer.from(str, 'base64') trong Node.js, base64.b64decode() trong Python.Không. Base64 là mã hóa dạng biểu diễn, không phải mã hóa bảo mật. Nó được thiết kế để biểu diễn và truyền dữ liệu, không phải để giữ bí mật. Nếu cần bảo mật, hãy mã hóa dữ liệu trước rồi mới chuyển bản mã sang Base64.
=?= là ký tự đệm. Base64 tạo ra 4 ký tự cho mỗi 3 byte đầu vào. Khi độ dài đầu vào không chia hết cho 3, một hoặc hai dấu = được thêm vào để độ dài kết quả luôn là bội số của 4.data:image/png;base64,..., nhờ đó ảnh được nhúng trực tiếp vào HTML, CSS hoặc JSON mà không cần một request mạng riêng.