Giải mã Base64

Dán chuỗi Base64 để lấy lại văn bản hoặc byte gốc. Ký tự xuống dòng, ký tự an toàn cho URL, phần đệm bị thiếu và tiền tố data: đều được xử lý tự động, còn thông báo lỗi chỉ rõ ký tự gây lỗi.

Chạy hoàn toàn trong trình duyệt của bạn. Không có gì được tải lên.

Cách sử dụng

  1. Dán chuỗi Base64 vào ô đầu vào, hoặc nhấp Mở tệp để tải một tệp chứa văn bản Base64.
  2. Giữ đầu ra dạng văn bản và chọn Bảng mã (mặc định là UTF-8), hoặc chuyển Đầu ra dạng sang Hex với dữ liệu nhị phân.
  3. Nếu giải mã thất bại, hãy đọc thông báo lỗi: nó cho biết vị trí của ký tự không hợp lệ đầu tiên.
  4. Nhấn Sao chép hoặc Tải xuống để lấy kết quả đã giải mã.

Bộ giải mã chấp nhận những gì

Giải mã là quá trình ngược của mã hóa: mỗi ký tự được ánh xạ trở lại giá trị 6 bit của nó, và cứ bốn ký tự trở thành ba byte. Base64 gặp ngoài thực tế hiếm khi "sạch", vì vậy bộ giải mã này khá dễ tính:

  • Dấu cách và ký tự xuống dòng được bỏ qua, nên bạn có thể dán nguyên nội dung MIME đã ngắt dòng hay khối PEM. Tuy nhiên, hãy xóa các dòng -----BEGIN và -----END trước: chữ cái và dấu gạch ngang trong đó đều là ký tự Base64 hợp lệ và sẽ bị giải mã như dữ liệu.
  • Đầu vào an toàn cho URL với - và _ được giải mã giống hệt Base64 tiêu chuẩn với + và /.
  • Thiếu phần đệm không thành vấn đề. Chỉ độ dài 4n + 1 ký tự bị từ chối, vì một ký tự lẻ còn dư không thể tạo thành một byte; điều này thường có nghĩa là chuỗi đã bị cắt mất một phần.
  • Data URI cũng dùng được: tiền tố data:...;base64, ở đầu sẽ được loại bỏ trước khi giải mã.

Đầu ra văn bản hay nhị phân

Kết quả giải mã luôn là một dãy byte. Nếu dữ liệu gốc là văn bản, hãy giữ đầu ra dạng văn bản và chọn đúng bảng mã. Nếu đó là hình ảnh, PDF, tệp nén, khóa hoặc bản mã, không bảng mã nào giúp đọc được: hãy chuyển đầu ra sang Hex để xem các byte, hoặc mở Base64 sang tệp hay Base64 sang ảnh để xem trước và lưu lại. Vài ký tự đầu tiên thường đã tiết lộ nội dung:

Base64 bắt đầu bằngNội dung sau giải mã
iVBORw0KGgoẢnh PNG
/9j/Ảnh JPEG
R0lGODẢnh GIF
JVBERi0Tài liệu PDF
UEsDBTệp nén ZIP, bao gồm cả DOCX, XLSX và JAR
H4sIDữ liệu nén gzip
eyJĐối tượng JSON, chẳng hạn header của JWT

Vì sao văn bản giải mã bị lỗi ký tự (lỗi font)

  • Sai bảng mã. Văn bản UTF-8 khi đọc bằng Windows-1252 sẽ biến é thành é, còn văn bản GBK hoặc Shift_JIS khi đọc bằng UTF-8 sẽ hiện ký tự thay thế (�). Hãy chọn đúng bảng mã mà văn bản được viết ban đầu.
  • Dữ liệu nhị phân. Các ký hiệu ngẫu nhiên xen lẫn vài đoạn đọc được, chẳng hạn PNG hoặc PK ở gần đầu, cho thấy nội dung là một tệp chứ không phải văn bản.
  • Dữ liệu nén hoặc đã mã hóa bảo mật. Luồng gzip, Protocol Buffers và bản mã vẫn được giải mã đúng nhưng không phải văn bản. Đầu ra dạng Hex cho thấy dữ liệu thực sự là gì.
  • Mã hóa hai lần. Nếu bản thân kết quả lại là Base64, hãy dán nó trở lại ô đầu vào và giải mã thêm lần nữa.

Giải mã Base64 trong mã nguồn

# Python
base64.b64decode(s).decode('utf-8')

// Node.js (cũng chấp nhận đầu vào an toàn cho URL)
Buffer.from(s, 'base64').toString('utf8')

// Trình duyệt: atob() trả về mỗi byte một ký tự, nên cần giải mã UTF-8 sau đó
new TextDecoder().decode(Uint8Array.from(atob(s), c => c.charCodeAt(0)))

# Shell trên Linux và macOS
echo 'SGVsbG8=' | base64 --decode

Đặc tả

Bảng ký tựA-Z a-z 0-9 + /
Kích thước đầu ra4 ký tự cho mỗi 3 byte (khoảng 133%)
Phần đệmThêm = cho đủ bội số của 4 ký tự
Tiêu chuẩnRFC 4648, mục 4
Phân biệt hoa thườngCó

Ví dụ

Đầu vào (UTF-8)Đầu ra
Hello, World!SGVsbG8sIFdvcmxkIQ==
Base64.isQmFzZTY0Lmlz
你好5L2g5aW9

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

Vì sao tôi nhận được lỗi ký tự không hợp lệ?
Đầu vào chứa thứ gì đó nằm ngoài bảng ký tự Base64, chẳng hạn dấu ngoặc kép, dấu gạch chéo ngược, hoặc chuỗi mã hóa phần trăm như %2B và %3D được sao chép từ URL. Hãy xóa dấu ngoặc kép hoặc giải mã URL cho chuỗi trước. Thông báo lỗi cho biết vị trí của ký tự gây lỗi đầu tiên.
Có thể giải mã Base64 không có phần đệm không?
Có. Bộ giải mã không cần các dấu = ở cuối, nên chuỗi không có phần đệm từ JWT, URL và API vẫn được giải mã bình thường.
Vì sao kết quả bị sai sau khi sao chép Base64 từ URL?
Khi Base64 được đặt vào chuỗi truy vấn mà không thoát ký tự, quá trình giải mã dữ liệu biểu mẫu thường biến mọi dấu + thành dấu cách. Công cụ này bỏ qua dấu cách nên những ký tự đó bị mất. Hãy thay dấu cách bằng + trước khi giải mã, và dùng Base64URL cho các giá trị truyền qua URL.
Làm sao để giải mã Base64 thành ảnh hoặc tệp?
Dùng Base64 sang ảnh để xem trước và tải xuống hình ảnh, hoặc Base64 sang tệp cho PDF, tệp nén, âm thanh và các loại tệp khác. Cả hai đều nhận dạng loại tệp từ những byte đầu tiên.
Chuỗi Base64 của tôi có bị gửi lên máy chủ không?

Không. Việc giải mã chạy trong trình duyệt của bạn bằng JavaScript và dữ liệu đầu vào không bao giờ rời khỏi thiết bị, điều này rất quan trọng khi bạn giải mã token, thông tin bí mật trong cấu hình hay dữ liệu cá nhân.