Mã hóa & Giải mã Base64

Chuyển văn bản và tệp sang Base64 và ngược lại. Xử lý Unicode chính xác, hỗ trợ base64url an toàn cho URL, và cho bạn biết chính xác vì sao đầu vào không hợp lệ.

Chạy trên trình duyệtKhông cần đăng kýKhông tải lên gì

Kết quả Base64

Cách dùng Mã hóa / Giải mã Base64

  1. Chọn Mã hóa hoặc Giải mã.
  2. Nhập hoặc dán dữ liệu. Kết quả cập nhật ngay khi bạn gõ.
  3. Với URL, JWT và tên tệp, đánh dấu An toàn cho URL để dùng - và _, và có thể bỏ padding =.
  4. Để nhúng ảnh hoặc font, bấm Mã hóa tệp và giữ chọn Xuất dạng data URI.
  5. Sao chép kết quả, hoặc dùng Đảo chiều để đưa nó trở lại theo chiều ngược lại.

Base64 hoạt động như thế nào

Base64 biểu diễn dữ liệu nhị phân bằng 64 ký tự ASCII in được: A-Z, a-z, 0-9, + và /. Cứ 3 byte đầu vào trở thành 4 ký tự, nên dữ liệu đã mã hóa lớn hơn khoảng 33%. Khi độ dài đầu vào không chia hết cho 3, một hoặc hai dấu = được thêm vào để đệm. Base64 là mã hóa (encoding), không phải mã hóa bảo mật (encryption): ai cũng có thể giải mã nó.

Base64 chuẩn và base64url

Ký tự + và / có ý nghĩa đặc biệt trong URL và đường dẫn tệp. Bảng chữ cái an toàn cho URL trong RFC 4648 §5 thay chúng bằng - và _ và thường bỏ padding. JWT, nhiều tham số OAuth và một số API đám mây dùng base64url. Bộ giải mã ở đây tự động chấp nhận cả hai bảng chữ cái.

Unicode và cái bẫy của btoa()

Trong trình duyệt, btoa("café") chạy được nhưng btoa("日本") sẽ ném lỗi, vì btoa chỉ nhận Latin-1. Cách đúng là mã hóa văn bản thành byte UTF-8 trước, và công cụ này làm đúng như vậy. Trong JavaScript: btoa(String.fromCharCode(...new TextEncoder().encode(text))), hoặc Buffer.from(text).toString('base64') trong Node.js.

Ứng dụng phổ biến

  • Data URI cho ảnh nhỏ và font trong CSS hoặc HTML
  • Header xác thực HTTP Basic (mã hóa user:password)
  • Tệp đính kèm nhị phân trong payload JSON và email (MIME)
  • Kubernetes Secrets, nơi giá trị được lưu dưới dạng Base64

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à cách mã hóa có thể đảo ngược và không có khóa. Ai cũng giải mã được, nên đừng bao giờ dùng nó để giấu mật khẩu hay thông tin bí mật.
Vì sao chuỗi Base64 của tôi không giải mã được?
Nguyên nhân thường gặp là ký tự nằm ngoài bảng chữ cái (thường là dấu nháy hoặc ký tự xuống dòng lẫn vào khi sao chép), chuỗi bị cắt cụt, hoặc trộn lẫn văn bản không phải Base64. Thông báo lỗi chỉ ra vị trí của lỗi đầu tiên.
Kết quả giải mã trông như ký tự rác. Tại sao?
Dữ liệu có lẽ là nhị phân, ví dụ ảnh, tệp nén hoặc byte đã mã hóa, chứ không phải văn bản. Công cụ phát hiện điều này, hiển thị hex dump và cho phép bạn tải xuống các byte thô.
Tôi có cần padding = không?
Nhiều bộ giải mã, kể cả công cụ này, vẫn hoạt động khi không có nó vì độ dài cho biết còn thiếu bao nhiêu byte. Một số bộ giải mã nghiêm ngặt thì bắt buộc. JWT và phần lớn trường hợp dùng base64url đều bỏ padding.
Tệp của tôi có bị tải lên không?
Không. Tệp được đọc và mã hóa cục bộ bằng File API của trình duyệt. Không có gì được gửi tới máy chủ.

Công cụ liên quan