Mã hóa Base64
Công cụ mã hóa và giải mã Base64 trực tuyến miễn phí. Hỗ trợ bộ ký tự UTF-8/ASCII/ISO-8859-1 với ba biến thể: Standard, URL-Safe và MIME. Hiển thị tỷ lệ tăng dữ liệu theo thời gian thực, ngắt dòng MIME tuân thủ tiêu chuẩn RFC 2045.
Công cụ mã hóa và giải mã Base64 trực tuyến miễn phí. Hỗ trợ bộ ký tự UTF-8/ASCII/ISO-8859-1 với ba biến thể: Standard, URL-Safe và MIME. Hiển thị tỷ lệ tăng dữ liệu theo thời gian thực, ngắt dòng MIME tuân thủ tiêu chuẩn RFC 2045.
Không. Base64 chỉ chuyển đổi văn bản thành một dạng biểu diễn có thể đảo ngược khác; bất kỳ ai cũng có thể giải mã nó trở lại văn bản gốc. Nếu liên quan đến dữ liệu nhạy cảm (mật khẩu, token), hãy sử dụng lược đồ mã hóa bí mật thực sự như AES. Base64 chỉ phù hợp cho việc chuyển đổi định dạng dữ liệu, giúp truyền dữ liệu nhị phân dễ dàng hơn qua hệ thống văn bản.
Công cụ mã hóa AESMã hóa Base64 làm tăng khối lượng dữ liệu gốc khoảng 33%. Điều này là do mỗi 3 byte (24 bit) được mã hóa thành 4 ký tự Base64. Ví dụ: văn bản 100 byte sau khi mã hóa sẽ là khoảng 133 byte. Tỷ lệ tăng được hiển thị theo thời gian thực ở dưới cùng công cụ để bạn có thể ước tính kích thước dữ liệu. Ví dụ: `Hello` → `SGVsbG8=` (khối lượng +33%).
Công cụ thống kê Base64Standard là Base64 chuẩn, sử dụng các ký tự A-Z, a-z, 0-9, +, /. URL-Safe thay thế +/ thành -_, làm cho nó phù hợp cho tham số URL và token JWT. MIME chèn ngắt dòng mỗi 76 ký tự, tuân thủ tiêu chuẩn email RFC 2045, phù hợp cho tệp đính kèm email và văn bản nhiều dòng.
URL-Safe Base64MIME Base64JWT sử dụng mã hóa Base64URL (biến thể URL-Safe). Sau khi chọn chế độ URL-Safe, chỉ cần dán đoạn đầu tiên (header) hoặc đoạn thứ hai (payload) của JWT để giải mã. Lưu ý: đoạn thứ ba của JWT là chữ ký và không nên giải mã hoặc xác minh tại đây.
Công cụ JWTĐộ dài kết quả mã hóa Base64 phải là bội số của 4. Khi độ dài đầu vào không phải là bội số của 3, phần cuối sẽ được đệm bằng ký tự =. Biến thể URL-Safe không sử dụng padding. Công cụ tự động xử lý padding và cũng tự động loại bỏ ký tự = khi giải mã.
Công cụ Padding Base64btoa và atob là API gốc của trình duyệt hoạt động với bộ ký tự Latin-1 (ISO-8859-1), trong đó mỗi ký tự chiếm 1 byte. Ký tự tiếng Trung chiếm 3 byte trong UTF-8, vì vậy việc nhập trực tiếp sẽ gây lỗi. Giải pháp là trước tiên sử dụng encodeURIComponent để chuyển đổi tiếng Trung thành mẫu chuỗi byte %xx UTF-8, sau đó sử dụng unescape để chuyển đổi thành chuỗi Latin-1 và cuối cùng sử dụng btoa để mã hóa.
Data URI là định dạng URI cho phép nhúng tệp nhỏ trực tiếp vào URL, cú pháp: `data:[<mediatype>][;base64],<data>`. Ví dụ: `data:image/png;base64,iVBORw0KGgo...`. Thường được sử dụng để nhúng biểu tượng nhỏ, hình nền CSS, v.v. để giảm số lượng yêu cầu HTTP. Nhưng Base64 làm tăng khối lượng 33%, vì vậy chỉ phù hợp cho tệp nhỏ; tệp lớn nên sử dụng URL thông thường.
Công cụ Data URIChuyển Base64 thành hình ảnhBase64 là một lược đồ mã hóa dữ liệu nhị phân thành văn bản dựa trên 64 ký tự ASCII có thể in được, lần đầu tiên được định nghĩa bởi RFC 2045 (tiêu chuẩn MIME). Base64 chuyển đổi mỗi 3 byte (24 bit) thành 4 ký tự Base64 (A-Z, a-z, 0-9, +, /), cho phép dữ liệu nhị phân được truyền an toàn qua các hệ thống chỉ hỗ trợ văn bản như tiêu đề HTTP, payload JSON, tài liệu XML hoặc tham số truy vấn URL.
**Base64 không phải là mã hóa bí mật**, nó chỉ cung cấp chuyển đổi định dạng dữ liệu, bất kỳ ai cũng có thể dễ dàng giải mã nó. Nếu bạn cần bảo vệ dữ liệu nhạy cảm, hãy sử dụng lược đồ mã hóa bí mật thực sự như AES. Các ứng dụng điển hình của Base64 bao gồm: HTTP Basic Authentication (`Authorization: Basic dXNlcjpwYXNz`), đoạn header và payload của token JWT (định dạng Base64URL), Data URI (`data:image/png;base64,...`), mã hóa MIME tệp đính kèm email, v.v.
**URL-Safe Base64** (RFC 4648 §5) thay thế +/ của Base64 chuẩn thành -_ và thường bỏ qua padding =. Điều này cho phép kết quả mã hóa xuất hiện an toàn trong URL, đường dẫn tệp hoặc trường JSON. Token JWT, code_verifier OAuth PKCE và AWS Signature V4 đều sử dụng mã hóa URL-Safe Base64.
**Ngắt dòng MIME** là tiêu chuẩn RFC 2045 quy định mỗi dòng không được vượt quá 76 ký tự. Khi nội dung Base64 được sử dụng trong email hoặc một số kịch bản yêu cầu ngắt dòng để hiển thị, biến thể MIME sẽ tự động chèn ký tự ngắt dòng (`\n`) mỗi 76 ký tự. Đây là định dạng chuẩn cho truyền tệp đính kèm email.
Công cụ sử dụng **API btoa/atob gốc** của trình duyệt kết hợp với logic xử lý UTF-8 an toàn, đảm bảo các ký tự đa byte như tiếng Trung, tiếng Nhật và emoji được mã hóa chính xác. Tất cả các phép tính được thực hiện cục bộ, dữ liệu không được gửi đến bất kỳ máy chủ nào. Mở bảng mạng trong công cụ phát triển của trình duyệt để xác minh không có yêu cầu bên ngoài trong toàn bộ quá trình.
| Đặc điểm | Standard | URL-Safe | MIME |
|---|---|---|---|
| Ký tự đặc biệt | + / | - _ | + / |
| Padding(=) | Sử dụng | Thường bỏ qua | Sử dụng |
| Ngắt dòng | Không | Không | Mỗi 76 ký tự 1 dòng |
| Tiêu chuẩn | RFC 4648 §4 | RFC 4648 §5 | RFC 2045 |
| Kịch bản điển hình | Data URI, mã hóa chung | JWT, tham số URL, tên tệp | Tệp đính kèm email, truyền SMTP |
| Mã hóa | Số ký tự | Đặc điểm bộ ký tự | Tăng dữ liệu | Sử dụng điển hình |
|---|---|---|---|---|
Base16 (Hex) | 16 | 0-9, A-F | 100% | Gỡ lỗi, hiển thị hàm băm |
Base32 | 32 | A-Z, 2-7(chữ hoa không nhầm lẫn) | 60% | DNS, khóa TOTP, mã QR |
Base58 | 58 | Loại bỏ ký tự dễ nhầm 0/O/I/l | 38% | Địa chỉ Bitcoin, tiền điện tử |
Base62 | 62 | A-Z, a-z, 0-9 | 34% | Rút gọn URL, mã hóa ID |
Base64 | 64 | A-Z, a-z, 0-9, +, / | 33% | Data URI, MIME, JWT(biến thể URL-Safe) |
// 编码(支持 UTF-8 中文)
function b64Encode(str) {
return btoa(unescape(encodeURIComponent(str)));
}
// 解码(支持 UTF-8 中文)
function b64Decode(str) {
return decodeURIComponent(escape(atob(str)));
}
// URL-Safe 编码(用于 JWT / OAuth)
function b64UrlEncode(str) {
return btoa(unescape(encodeURIComponent(str)))
.replace(/\+/g, '-')
.replace(/\//g, '_')
.replace(/=+$/, '');
}
console.log(b64Encode('Hello 世界')); // SGVsbG8g5LiW55WM
console.log(b64Decode('SGVsbG8g5LiW55WM')); // Hello 世界import base64
# Standard 编码(UTF-8)
encoded = base64.b64encode('Hello 世界'.encode('utf-8'))
print(encoded.decode()) # SGVsbG8g5LiW55WM
# Standard 解码
decoded = base64.b64decode(encoded).decode('utf-8')
print(decoded) # Hello 世界
# URL-Safe 编码(用于 JWT / OAuth)
url_safe = base64.urlsafe_b64encode('Hello 世界'.encode('utf-8'))
print(url_safe.decode()) # SGVsbG8g5LiW55WM(无 padding 需手动去除)
# 去除 padding(JWT 标准做法)
url_safe_no_pad = url_safe.decode().rstrip('=')
print(url_safe_no_pad)import java.nio.charset.StandardCharsets;
import java.util.Base64;
public class Base64Example {
public static void main(String[] args) {
String text = "Hello 世界";
// Standard 编码
String encoded = Base64.getEncoder()
.encodeToString(text.getBytes(StandardCharsets.UTF_8));
System.out.println(encoded); // SGVsbG8g5LiW55WM
// Standard 解码
String decoded = new String(
Base64.getDecoder().decode(encoded), StandardCharsets.UTF_8);
System.out.println(decoded); // Hello 世界
// URL-Safe 编码(用于 JWT / URL)
String urlSafe = Base64.getUrlEncoder().withoutPadding()
.encodeToString(text.getBytes(StandardCharsets.UTF_8));
System.out.println(urlSafe);
// MIME 编码(76字符换行)
String mime = Base64.getMimeEncoder()
.encodeToString(text.getBytes(StandardCharsets.UTF_8));
}
}