Cách giải mã và mã hóa Base64
- Chọn Giải mã để đổi Base64 về văn bản, hoặc Mã hóa để đổi văn bản thành Base64.
- Dán dữ liệu đầu vào. Kết quả cập nhật ngay khi bạn gõ. Dấu cách và xuống dòng trong chuỗi Base64 sẽ được bỏ qua, và phần đầu
data:…;base64,được tự động loại bỏ. - Khi mã hóa, bật Base64 an toàn cho URL nếu kết quả sẽ nằm trong đường dẫn, tên tệp hoặc token.
- Bấm Sao chép, hoặc Dùng kết quả làm đầu vào để đảo chiều và kiểm tra xem dữ liệu có trở lại như cũ không.
- Để nhúng ảnh hoặc font vào HTML hay CSS, dùng mục Tệp sang Base64 để lấy data URL hoàn chỉnh.
Base64 là gì?
Base64 biểu diễn bất kỳ dãy byte nào chỉ bằng 64 ký tự an toàn: A–Z, a–z, 0–9, + và /. Nó ra đời vì nhiều hệ thống như email, JSON, XML và URL được thiết kế cho văn bản và có thể hỏng khi gặp dữ liệu nhị phân thô. Cứ 3 byte (24 bit) được đổi thành 4 ký tự, mỗi ký tự 6 bit, nên Base64 nặng hơn dữ liệu gốc khoảng 33%. Khi dữ liệu không chia hết cho 3 byte, các dấu = được thêm vào cuối để đủ độ dài.
Ví dụ có số liệu cụ thể
Văn bản Hi! gồm ba byte: 72, 105 và 33, viết nhị phân là 01001000 01101001 00100001. Chia lại thành các khối 6 bit ta được 010010 000110 100100 100001 = 18, 6, 36, 33. Trong bảng chữ cái Base64, các vị trí này là S, G, k và h, vì vậy Hi! được mã hóa thành SGkh.
Ký tự ngoài tiếng Anh chiếm nhiều byte hơn trong UTF-8. Chữ é là hai byte (C3 A9) và mã hóa thành w6k=; emoji vẫy tay 👋 là bốn byte, vì thế Hello, World! 👋 trở thành chuỗi 24 ký tự SGVsbG8sIFdvcmxkISDwn5GL. Chữ tiếng Việt cũng vậy: ê là hai byte, còn các chữ như ệ chiếm ba byte, nên một câu có nhiều dấu sẽ cho chuỗi Base64 dài hơn câu tiếng Anh cùng độ dài.
Unicode và dữ liệu đầu vào không hợp lệ
Hai hàm btoa và atob của trình duyệt chỉ hiểu Latin-1 nên báo lỗi với emoji và phần lớn văn bản có dấu. Công cụ này đổi văn bản sang byte UTF-8 trước, đúng như hầu hết hệ thống hiện đại mong đợi. Khi giải mã, công cụ kiểm tra đầu vào và cho bạn biết chính xác lỗi ở đâu thay vì trả về một đống ký tự rác:
- Ký tự không hợp lệ, kèm vị trí, ví dụ dấu
*lạ hoặc dấu ngoặc kép cong dán từ tài liệu Word. - Sai độ dài: một ký tự thừa không thể tạo thành một byte, nghĩa là dữ liệu bị cắt cụt.
- Sai phần đệm: dấu
=chỉ được xuất hiện ở cuối và tối đa hai dấu. - Không phải văn bản: các byte là Base64 hợp lệ nhưng không phải UTF-8, thường là ảnh hoặc PDF. Bạn sẽ thấy những byte đầu ở dạng thập lục phân; ví dụ
ff d8 fflà phần mở đầu của ảnh JPEG.
Mẹo sử dụng
- Base64 không phải bảo mật. Đừng dùng nó để giấu mật khẩu hay khóa API; ai cũng giải mã được trong một giây.
- JWT gồm ba phần Base64 an toàn cho URL, ngăn cách bằng dấu chấm. Hãy dán từng phần một để đọc phần header hoặc payload.
- Data URL hợp với tệp nhỏ. Biểu tượng vài kilobyte nhúng thẳng vào trang thì ổn; ảnh lớn nên để thành tệp riêng để trình duyệt lưu đệm và tải nhanh hơn.
- Xuống dòng: email (MIME) ngắt Base64 mỗi 76 ký tự. Bộ giải mã bỏ qua các chỗ ngắt này nên bạn cứ dán nguyên văn.
Câu hỏi thường gặp
Base64 có phải là mã hóa bảo mật không?
Không. Base64 chỉ là một cách biểu diễn dữ liệu mà ai cũng đảo ngược được ngay lập tức. Nó giúp dữ liệu nhị phân có thể nằm trong các định dạng văn bản, chứ không che giấu hay bảo vệ gì cả. Hãy dùng mã hóa thật sự cho thông tin bí mật.
Vì sao chữ tiếng Việt giải mã ở trang khác bị lỗi font?
Nhiều công cụ coi các byte là Latin-1 nên làm hỏng chữ có dấu và emoji. Công cụ này mã hóa và giải mã văn bản bằng UTF-8, nên “Việt Nam”, “ơ”, “ữ” và 😀 trở lại đúng như lúc bạn nhập.
Base64 an toàn cho URL là gì?
Là biến thể thay + bằng - và / bằng _, thường bỏ luôn dấu = ở cuối, để kết quả dùng được trong URL, tên tệp và JSON Web Token mà không cần thoát ký tự. Bộ giải mã chấp nhận cả hai biến thể.
Dữ liệu của tôi có bị tải lên không?
Không. Văn bản và tệp được chuyển đổi trong trình duyệt bằng các hàm có sẵn và không bao giờ rời khỏi thiết bị của bạn.