RevealTheme logo

Bộ mã hóa và giải mã Base64

Mã hóa các chuỗi sang Base64 hoặc giải mã Base64 thành văn bản. Tôn trọng quyền riêng tư của bạn: chạy ngay trong trình duyệt.

Base64 là gì và tại sao nó có mặt ở khắp mọi nơi?

Base64 là một sơ đồ mã hóa —không phải mã hóa bảo mật— biểu diễn dữ liệu nhị phân tùy ý bằng cách chỉ dùng 64 ký tự ASCII có thể in được (A-Z, a-z, 0-9, cùng với +, / và = làm ký tự đệm). Nó tồn tại vì nhiều giao thức truyền tải, định dạng tệp và API chỉ chấp nhận văn bản hoặc xử lý một số byte nhất định theo cách đặc biệt: email (SMTP được thiết kế cho ASCII 7 bit), JSON (không thể chứa byte thô), URL (có các ký tự dành riêng), tiêu đề HTTP (văn bản định hướng theo dòng) và thuộc tính HTML đều cần một cách để truyền dữ liệu nhị phân qua các kênh văn bản. Base64 giải quyết điều này bằng cách nhóm các byte đầu vào thành từng bộ 3 (24 bit) và mã hóa lại mỗi bộ thành 4 ký tự Base64 (mỗi ký tự 6 bit). Phần dung lượng tăng thêm đúng bằng 33%: cứ mỗi 3 byte trở thành 4 ký tự. Công cụ này mã hóa văn bản UTF-8 hoặc các chuỗi Base64 theo cả hai chiều, hoàn toàn ngay trong trình duyệt của bạn. Nó xử lý chính xác các ký tự UTF-8 nhiều byte (emoji, các bảng chữ cái không phải Latinh) mà các cách triển khai Base64 ngây thơ dùng trực tiếp atob/btoa làm hỏng.

Các trường hợp sử dụng phổ biến

  • Nhúng hình ảnh nhỏ trực tiếp vào CSS dưới dạng data: URL (loại bỏ một yêu cầu HTTP cho các biểu tượng nhỏ).

  • Giải mã payload của một JWT hoặc header Basic Auth để xem bên trong có gì.

  • Mã hóa nội dung tệp nhị phân để đưa vào một trường JSON hoặc biến môi trường.

  • Di chuyển dữ liệu nhị phân qua các hệ thống không bảo toàn byte tùy ý (email, sao chép/dán).

  • Giải mã các phản hồi API hoặc payload webhook được mã hóa base64 khi gỡ lỗi.

  • Chuyển đổi thông tin đăng nhập nhị phân sang định dạng thân thiện với sao chép-dán để bàn giao vận hành.

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 là một cách mã hóa có thể đảo ngược: bất cứ ai cũng có thể giải mã nó ngay lập tức mà không cần khóa. Để giữ bí mật, hãy dùng mã hóa thực sự (AES-256, RSA hoặc công cụ Mã hóa AES của chúng tôi). Coi Base64 như một biện pháp bảo mật là sai lầm phổ biến nhất về nó.
Tại sao Base64 lại tăng kích thước thêm ~33%?
Việc mã hóa ánh xạ 3 byte (24 bit) đầu vào thành 4 ký tự (24 bit, vì mỗi ký tự Base64 biểu diễn 6 bit). Phần tải phụ về kích thước là cố hữu và không thể tránh khỏi. Để có các biểu diễn nhị phân nhỏ hơn, hãy dùng Base85 hoặc gửi nhị phân thô nếu kênh truyền hỗ trợ.
Base64 an toàn cho URL là gì?
Một biến thể được quy định trong RFC 4648 thay thế + bằng - và / bằng _, để kết quả đã an toàn cho việc đưa vào các đường dẫn URL hoặc tên tệp mà không cần mã hóa theo phần trăm. Các JWT dùng Base64 an toàn cho URL. Nhiều API chấp nhận cả hai biến thể.
Tại sao tôi thấy '=' ở cuối?
Đó là các ký tự đệm. Base64 xuất kết quả theo nhóm 4 ký tự; nếu đầu vào không phải là bội số của 3 byte, nhóm cuối cùng sẽ được đệm bằng '=' cho đến khi đủ 4 ký tự. Một số biến thể Base64 bỏ qua phần đệm; cả hai đều giải mã theo cùng một cách.
Nó có xử lý emoji và văn bản không phải Latinh không?
Có. Công cụ trước tiên chuyển văn bản thành các byte UTF-8 rồi sau đó mã hóa các byte sang Base64. Điều này tránh được lỗi kinh điển trong JavaScript khi btoa() thất bại với các ký tự không phải Latin1.
Tôi gặp Base64 ở đâu trong các ứng dụng thực tế?
Ở khắp mọi nơi: các URL data: của hình ảnh trong CSS, tiêu đề Authorization: Basic, các đoạn của JWT, chữ ký của các URL đã ký, các URL ký trước của S3, chứng chỉ PKCS (định dạng PEM), tệp đính kèm email (MIME), payload của mã QR và các secret kiểu .env của các nền tảng triển khai hiện đại.

Công cụ liên quan