Mã Base64 là gì và vì sao ảnh hay được mã hóa kiểu này?

Trang chủ / Blog / Mã Base64 là gì và vì sao ảnh hay được mã hóa kiểu này?
Minh họa Base64 đổi ảnh thành chuỗi ký tự
Ảnh bìa bài viết Mã Base64 là gì và vì sao ảnh hay được mã hóa kiểu này

Bạn đã bao giờ mở mã nguồn một trang web và bắt gặp một chuỗi ký tự dài ngoằng, bắt đầu bằng data:image/png;base64, rồi chạy mãi không hết? Nhìn qua thì giống như ai đó gõ bừa lên bàn phím, nhưng thực ra đó là một bức ảnh đang “cải trang” thành chữ. Cùng tìm hiểu xem Base64 là gì và vì sao ảnh hay được mã hóa kiểu này nhé.

Base64 đổi dữ liệu nhị phân thành chữ như thế nào?

Base64 là một cách đổi dữ liệu nhị phân thành chuỗi chữ cái, để dữ liệu có thể đi qua những kênh vốn chỉ chở được chữ. Bạn có thể hình dung nó như một bộ phiên dịch: đầu vào là ảnh, file hay bất kỳ dãy byte nào, đầu ra chỉ còn những ký tự an toàn, gồm chữ hoa A–Z, chữ thường a–z, chữ số 0–9 và hai ký tự + và /, đôi khi có thêm dấu = đệm ở cuối.

Cách làm của nó cũng gọn gàng. Cứ 3 byte đầu vào (24 bit) được chia thành 4 nhóm, mỗi nhóm 6 bit, và mỗi nhóm 6 bit tương ứng với một ký tự trong bảng 64 ký tự. Vì 3 byte thành 4 ký tự nên chuỗi Base64 luôn dài hơn dữ liệu gốc khoảng một phần ba: 1.000 byte sẽ thành 1.336 ký tự. Nghe thì dài hơn, nhưng đổi lại chuỗi này đi đâu cũng an toàn.

Thử một ví dụ nhỏ là thấy ngay. Chữ “Man” có 3 byte, mã hóa ra thành TWFu, đúng 4 ký tự, không thừa không thiếu. Còn câu “Xin chào” bằng tiếng Việt có dấu, khi thử thật trên công cụ mã hóa/giải mã Base64 của Công Cụ Việt vào ngày 26/10/2026 thì cho ra WGluIGNow6Bv. Tiếng Việt có dấu được xử lý qua UTF-8 trước khi mã hóa, nên bạn gõ tiếng Việt vẫn ra chuỗi đúng và giải mã ngược lại được.

Minh họa Base64 đổi 3 byte thành 4 ký tự
Cứ 3 byte dữ liệu lại thành 4 ký tự Base64, đó là lý do chuỗi mã hóa luôn dài hơn bản gốc một chút.

Vì sao ảnh và file hay được gửi kèm dưới dạng Base64?

Chuyện bắt đầu từ email. Hệ thống gửi thư điện tử đời đầu (SMTP) vốn chỉ được thiết kế để chở chữ, nên một file ảnh hay tài liệu đính kèm không thể gửi nguyên dạng nhị phân qua đó mà không bị hỏng. Chuẩn MIME ra đời để giải quyết việc này: file được mã hóa thành Base64, đi kèm thư dưới dạng chữ, và hộp thư của người nhận sẽ tự giải mã trả lại thành file gốc. Bạn gửi ảnh đính kèm email mỗi ngày mà không để ý rằng Base64 đang làm việc thầm lặng phía sau.

Trên web, Base64 còn có một vai trò khác: nhúng ảnh thẳng vào trang. Thay vì trình duyệt phải tải thêm một file ảnh riêng, lập trình viên có thể viết data:image/png;base64,... ngay trong mã HTML hoặc CSS, và ảnh sẽ hiện lên cùng với trang. Với những icon nhỏ hay logo, cách này giúp trang đỡ một lần tải file, nên phần đầu trang hiện ra nhanh hơn. Nhỏ mà tiện. Đúng chỗ thì hay.

Base64 không phải là khóa bảo mật: và khác gì mã hóa thật, hàm băm?

Đây là chỗ nhiều người nhầm nhất, nên cần nói rõ ngay: Base64 không giấu được gì cả. Nó không dùng khóa, không có mật khẩu, và bất kỳ ai cầm chuỗi mã hóa cũng giải mã ngược lại được trong vài giây. Kết quả thử thật trên công cụ của Công Cụ Việt: dán chuỗi SGVsbG8= vào ô giải mã, kết quả hiện ra ngay chữ “Hello”. Nếu một mật khẩu hay thông tin nhạy cảm chỉ được “bảo vệ” bằng Base64 thì thực ra nó đang để trần.

So sánh nhanh cho dễ nhớ: mã hóa thật thì cần khóa để mở, mất khóa là không đọc được; hàm băm thì một chiều, giống như xay thịt thành thịt băm, không ghép lại thành miếng thịt ban đầu được. Còn Base64 thì giống như viết một bức thư bằng bảng chữ cái khác: ai biết bảng chữ cái là đọc được ngay. Vì thế, muốn giữ bí mật thì phải mã hóa thật trước, rồi mới dùng Base64 để chở chuỗi đã mã hóa qua kênh chữ nếu cần.

Thử thật với công cụ Base64 của Công Cụ Việt: đúng, nhưng chỉ xử lý văn bản

Công cụ mã hóa/giải mã Base64 của Công Cụ Việt là công cụ do Công Cụ Việt làm, nên cả điểm được và điểm chưa được đều được nói thẳng. Ngày 26/10/2026, công cụ được thử trực tiếp và cả ba phép đều cho kết quả đúng: “Xin chào” thành WGluIGNow6Bv, “Man” thành TWFu, và giải mã SGVsbG8= ra “Hello”. Công cụ có nút sao chép và nút xóa nội dung, dùng tiếng Việt có dấu tốt.

Điểm trừ cần nói rõ: công cụ này chỉ xử lý văn bản, không có chỗ chọn file hay ảnh để mã hóa, và cũng không có chế độ Base64URL riêng, biến thể dùng dấu – và _ thay cho + và / để đưa vào đường link, thường gặp trong các token đăng nhập. Nếu bạn cần đổi một file ảnh thành Base64, hãy dùng công cụ chuyển đổi file sang Base64 riêng của Công Cụ Việt. Còn khi cần xem một token đăng nhập gồm ba đoạn nối nhau bằng dấu chấm, trình phân tích JWT của Công Cụ Việt sẽ tiện hơn. Công Cụ Việt ghi nhận hai điểm này và sẽ cân nhắc bổ sung chế độ Base64URL cùng chức năng chọn file trong thời gian tới.

Minh họa chuỗi Base64 không có khóa bảo mật nên ai cũng giải mã được
Base64 không có khóa, nên bất kỳ ai cầm chuỗi mã hóa cũng đọc ngược lại được, đừng dùng nó để giấu mật khẩu.

Khi nào nên dùng Base64, khi nào nên để ảnh ở file riêng?

Base64 hợp nhất với những thứ nhỏ và ít thay đổi: icon, logo nhỏ, chữ ký email, hay một file HTML trình diễn đứng riêng lẻ. Trong những trường hợp đó, việc nhúng thẳng ảnh vào mã giúp bạn đỡ phụ thuộc vào file ngoài, không sợ ảnh bị xóa hay chuyển chỗ làm hỏng trang.

Nhưng với ảnh lớn thì câu chuyện đảo ngược. Ảnh càng lớn, mức phình thêm khoảng 33% càng đáng kể, ảnh nhúng không được trình duyệt lưu đệm riêng như file ảnh thường, và mỗi lần đổi ảnh bạn phải mã hóa lại rồi dán chuỗi mới vào mã. Một lưu ý thực tế nữa: Gmail bản web chặn ảnh Base64, nên nếu bạn gửi email quảng cáo mà nhúng ảnh kiểu này, người nhận dùng Gmail bản web có thể chỉ thấy ảnh hỏng. Với ảnh lớn hay email gửi nhiều người, để ảnh ở file riêng và dẫn link vẫn là cách an toàn hơn.

Kết luận: Base64 hợp với ai?

Base64 đáng hiểu với bất kỳ ai làm web, làm email hay thường xuyên đọc mã nguồn: nó giúp bạn nhận ra ngay một chuỗi ký tự dài là ảnh đang cải trang thành chữ, và biết vì sao nó xuất hiện ở đó. Với người chỉ dùng công cụ để đổi văn bản qua lại, công cụ Base64 của Công Cụ Việt đủ dùng và cho kết quả đúng với tiếng Việt có dấu. Chỉ nhớ một điều: đừng bao giờ dùng Base64 để giấu mật khẩu hay thông tin nhạy cảm, vì nó không giấu được gì cả. Bạn đã từng bắt gặp chuỗi Base64 ở đâu mà lúc đó chưa biết nó là gì? Hãy chia sẻ ở phần bình luận nhé.

Hỏi đáp nhanh

Chuỗi có dấu – và _ thay cho + và / có phải Base64 không?

Đó là Base64URL, biến thể thay + và / bằng – và _ để chuỗi đưa vào đường link được an toàn, thường gặp trong các token đăng nhập. Công cụ Base64 của Công Cụ Việt hiện chưa có chế độ Base64URL riêng; khi cần xem một token đăng nhập, trình phân tích JWT của Công Cụ Việt sẽ tiện hơn.

Vì sao chuỗi Base64 dài hơn dữ liệu gốc?

Vì cứ 3 byte (24 bit) được chia thành 4 ký tự Base64, nên chuỗi mã hóa dài hơn dữ liệu gốc khoảng một phần ba. Ví dụ: 1.000 byte thành 1.336 ký tự, và chữ “Man” (3 byte) thành TWFu (4 ký tự).

Ảnh lớn có nên nhúng bằng Base64 không?

Không nên. Ảnh lớn nhúng Base64 sẽ phình thêm khoảng 33%, không được trình duyệt lưu đệm riêng, và mỗi lần đổi ảnh phải mã hóa lại. Base64 chỉ hợp với icon, logo nhỏ và những ảnh ít thay đổi; ảnh lớn nên để ở file riêng.

Base64 không phải cách duy nhất để nhúng dữ liệu vào một định dạng trung gian dễ truyền tải, và mã QR là ví dụ quen thuộc nhất ở chiều ngược lại, khi dữ liệu được gói vào hình ảnh để máy khác quét đọc. Bài Mã QR là gì? Cách mã QR lưu được cả một đường link giải thích cách một ô vuông nhỏ chứa được nhiều thông tin đến vậy.

Bình luận vui vẻ - Yêu cầu nâng cấp