logo
GeekFormat
Văn bản Đầu vào
0 ký tự

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.

Đề xuất Liên quan

Trường hợp sử dụng

  • Gỡ lỗi JWT: giải mã các đoạn header và payload của JWT (định dạng Base64URL) để xem nội dung xác nhận quyền của token
  • Basic Auth: mã hóa tên_người_dùng:mật_khẩu làm thông tin xác thực HTTP Basic
  • Phát triển OAuth: tạo code_verifier hoặc xác minh code_challenge trong kịch bản PKCE
  • Gỡ lỗi API: mã hóa dữ liệu JSON hoặc giải mã trường Base64 trả về bởi API
  • Nhúng hình ảnh Data URI: chuyển đổi biểu tượng nhỏ thành định dạng data:image/...;base64,... để nhúng vào CSS/HTML
  • Mã hóa tệp đính kèm email: mã hóa tệp đính kèm email nhị phân ở định dạng MIME Base64

Tính năng

  • Chuyển đổi Encode/Decode một cú nhấp: tự do chuyển đổi giữa chế độ mã hóa và giải mã, đầu ra trở thành đầu vào trực tiếp để hỗ trợ xử lý tuần hoàn
  • Hỗ trợ ba bộ ký tự: UTF-8 (tiếng Trung/tiếng Nhật/emoji), ASCII, ISO-8859-1, bao phủ chuyên nghiệp nhiều kịch bản
  • Ba biến thể cho đầu ra: Standard (chuẩn), URL-Safe (an toàn cho JWT/OAuth/PKCE), MIME (tiêu chuẩn RFC 2045 với ngắt dòng 76 ký tự)
  • Thống kê khối lượng theo thời gian thực: hiển thị số ký tự đầu vào/đầu ra và tỷ lệ tăng theo thời gian thực (Base64 tăng khối lượng khoảng 33%)
  • Thông báo lỗi rõ ràng: khi ký tự ngoài phạm vi, hiển thị thông báo lỗi cụ thể thay vì lỗi đơn giản
  • Thanh phân cách có thể kéo thả: trên máy tính có thể điều chỉnh tỷ lệ vùng chỉnh sửa trái phải để tập trung vào tác vụ hiện tại
  • Tab độc lập cho di động: người dùng điện thoại/máy tính bảng chuyển đổi độc lập giữa vùng nhập và xuất để trải nghiệm mượt mà

Cách Sử dụng

  1. Chọn chế độ: nhấp Encode (mã hóa) hoặc Decode (giải mã) để thay đổi hướng xử lý
  2. Chọn biến thể: Standard (chuẩn), URL-Safe (JWT/OAuth), MIME (định dạng email với ngắt dòng 76 ký tự)
  3. Nhập nội dung: dán văn bản hoặc chuỗi Base64, nó sẽ tự động được xử lý theo thời gian thực
  4. Xem thống kê: ở dưới cùng hiển thị số ký tự và tỷ lệ tăng khối lượng (mã hóa tăng khối lượng khoảng 33%)
  5. Sao chép kết quả: sao chép chuỗi Base64 hoặc văn bản giải mã bằng một cú nhấp

Câu hỏi Thường gặp

Mã hóa Base64 có giống như mã hóa bí mật không?

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 AES

Dữ liệu tăng bao nhiêu sau khi mã hóa Base64?

Mã 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ê Base64

Sự khác biệt giữa ba biến thể Standard, URL-Safe và MIME là gì?

Standard 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 Base64

Làm thế nào để giải mã header hoặc payload của JWT?

JWT 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

Padding (đệm) trong Base64 là gì?

Độ 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 Base64

Tại sao btoa và atob trong JavaScript không hỗ trợ tiếng Trung?

btoa 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 Scheme là gì? Làm thế nào để nhúng hình ảnh bằng Base64?

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 ảnh

Mã hóa Base64 là gì?

Base64 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.

术语表

RFC 4648
Tiêu chuẩn chính thức về mã hóa Base16/Base32/Base64 được xuất bản bởi IETF. Định nghĩa hai bảng chữ cái: Base64 chuẩn và URL-Safe Base64, cũng như các quy tắc về padding, ngắt dòng, xử lý ký tự không thuộc bảng chữ cái, v.v. Là tiêu chuẩn thực tế hiện hành cho mã hóa Base64, thay thế RFC 3548 trước đó.Công cụ URL-Safe Base64Công cụ Padding Base64
RFC 2045 (MIME)
Tiêu chuẩn MIME (Đa mục đích mở rộng thư Internet). Lần đầu tiên áp dụng Base64 làm phương pháp mã hóa cho truyền nội dung thư. Quy định rằng mã hóa Base64 không được vượt quá 76 ký tự mỗi dòng và được phân tách bằng CRLF, được gọi là biến thể MIME Base64.Công cụ MIME Base64
Base64URL (URL-Safe Base64)
Biến thể an toàn cho URL được định nghĩa trong RFC 4648 §5. Thay thế + của Base64 chuẩn thành - và / thành _, và thường bỏ qua ký tự padding =. Được sử dụng rộng rãi trong các kịch bản như token JWT, OAuth PKCE, tham số URL và tên tệp.Công cụ URL-Safe Base64Công cụ JWT
MIME Base64
Biến thể Base64 tuân thủ tiêu chuẩn RFC 2045, chèn ký tự ngắt dòng (CRLF) mỗi 76 ký tự. Chủ yếu được sử dụng cho truyền tệp đính kèm email, vì các giao thức SMTP ban đầu có giới hạn về độ dài một dòng.Công cụ MIME Base64
Padding (đệm)
Độ dài kết quả mã hóa Base64 phải là bội số của 4. Khi số byte đầ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ự =. Base64 chuẩn sử dụng padding, Base64URL thường bỏ qua nó.Công cụ Padding Base64
Bảng chữ cái Base64
Tập hợp 64 ký tự được sử dụng trong mã hóa Base64. Bảng chữ cái Base64 chuẩn: A-Z (26), a-z (26), 0-9 (10), +, /, tổng cộng 64 ký tự, cộng với ký tự đệm =.
btoa / atob
API gốc của trình duyệt cho mã hóa/giải mã Base64. btoa (binary to ASCII) được sử dụng để mã hóa, atob (ASCII to binary) để giải mã. Lưu ý: các API này chỉ hỗ trợ bộ ký tự Latin-1. Để xử lý tiếng Trung, chúng phải được kết hợp với chuyển mã UTF-8.
Data URI Scheme
Định dạng URI cho phép nhúng tệp nhỏ trực tiếp vào URL, định dạng: data:[<mediatype>][;base64],<data>. Thường được sử dụng để nhúng biểu tượng nhỏ và hình nền CSS để giảm yêu cầu HTTP.Công cụ Data URIBase64 thành hình ảnh
HTTP Basic Authentication
Một phương thức xác thực trong giao thức HTTP. Tên người dùng và mật khẩu được kết hợp bằng dấu hai chấm, mã hóa trong Base64 và gửi trong tiêu đề Authorization của yêu cầu. Định dạng: Authorization: Basic <base64(tên_người_dùng:mật_khẩu)>.Trình tạo tiêu đề Auth
Tỷ lệ tăng Base64
Tỷ lệ mà khối lượng dữ liệu tăng lên sau khi mã hóa Base64. Mỗi 3 byte (24 bit) được mã hóa thành 4 ký tự Base64, vì vậy khối lượng tăng khoảng 33% (4/3 ≈ 1,333). Với padding, tỷ lệ tăng cao hơn một chút.

So sánh ba biến thể Base64

Đặc điểmStandardURL-SafeMIME
Ký tự đặc biệt+ /- _+ /
Padding(=)Sử dụngThường bỏ quaSử dụng
Ngắt dòngKhôngKhôngMỗi 76 ký tự 1 dòng
Tiêu chuẩnRFC 4648 §4RFC 4648 §5RFC 2045
Kịch bản điển hìnhData URI, mã hóa chungJWT, tham số URL, tên tệpTệp đính kèm email, truyền SMTP

Bảng so sánh các mã hóa dòng Base

Mã hóaSố ký tựĐặc điểm bộ ký tựTăng dữ liệuSử dụng điển hình
Base16 (Hex)160-9, A-F100%Gỡ lỗi, hiển thị hàm băm
Base3232A-Z, 2-7(chữ hoa không nhầm lẫn)60%DNS, khóa TOTP, mã QR
Base5858Loại bỏ ký tự dễ nhầm 0/O/I/l38%Địa chỉ Bitcoin, tiền điện tử
Base6262A-Z, a-z, 0-934%Rút gọn URL, mã hóa ID
Base6464A-Z, a-z, 0-9, +, /33%Data URI, MIME, JWT(biến thể URL-Safe)

Code Examples

Mã hóa Base64 trong JavaScript (hỗ trợ tiếng Trung UTF-8)

// 编码(支持 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 世界

Mã hóa Base64 trong Python

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)

Mã hóa Base64 trong Java

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));
    }
}

Authoritative References