Giải mã Base64

Dán chuỗi Base64 bên dưới và nhấp Giải mã để chuyển đổi về văn bản thuần. Mọi xử lý đều diễn ra cục bộ trong trình duyệt của bạn.

Bộ ký tự an toàn cho URL, ngắt dòng và ký tự đệm bị thiếu đều được chấp nhận.
Đã sao chép!

Base64 Decoding là gì?

Giải mã Base64 chuyển đổi chuỗi ASCII được mã hóa Base64 trở lại dữ liệu nhị phân hoặc văn bản gốc. Đây là quá trình ngược lại của mã hóa Base64.

Nếu đầu vào chứa các ký tự nằm ngoài bảng chữ cái Base64 (A-Z, a-z, 0-9, +, /, =), quá trình giải mã sẽ báo lỗi.

Việc giải mã dùng chính hàm Base64 của trình duyệt, vốn rất nghiêm: nó chờ đúng bộ ký tự chuẩn và ký tự đệm đúng, còn lại thì từ chối thay vì đoán. Các byte giải ra sau đó được đọc như văn bản UTF-8.

Bạn đang gỡ lỗi thứ gì đó không chịu giải mã?

Một payload không chịu giải mã thường là triệu chứng chứ không phải lỗi gốc: mã hoá hai lần ở đâu đó trong đường ống, bộ ký tự được đoán thay vì được khai báo, một token ký trên những byte không hẳn là byte mà ai đó trông đợi. Chúng tôi làm đúng loại việc này, trên các tích hợp, API và những hệ thống chuyền dữ liệu qua lại.

Cho chúng tôi biết chỗ nào đang hỏng

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

Vì sao chuỗi Base64 của tôi không giải mã được?
Gần như luôn là một trong bốn nguyên nhân: một ký tự nằm ngoài bộ ký tự, thường nghĩa là URL đã hỏng hoặc thao tác sao chép nhặt thêm dấu câu lạc; một độ dài dư đúng một ký tự, vốn không thể biểu diễn số byte nguyên; bộ ký tự an toàn cho URL, mà dấu gạch nối và gạch dưới của nó thì bộ giải mã chuẩn không nhận; hoặc ký tự đệm bị lược mất trên đường đi. Trang này dùng chính bộ giải mã của trình duyệt, nghiêm ngặt với cả bốn và từ chối thay vì đoán.
Vì sao kết quả giải mã không phải văn bản đọc được?
Vì những byte đó vốn chưa từng là văn bản. Base64 chở dữ liệu bất kỳ, nên thứ nằm trong đó có thể là ảnh, PDF, kho nén hay một cấu trúc đã tuần tự hoá. Trang này đọc các byte giải ra như văn bản UTF-8, nên thứ gì không phải văn bản sẽ ra rỗng hoặc méo mó, và chính điều đó đã là câu trả lời. Nếu bạn trông đợi văn bản, hãy ngờ tới mã hoá hai lần: thứ gì đó đã Base64 lên dữ liệu vốn đã là Base64.
Tôi có giải mã được Base64 không có ký tự đệm không?
Ở đây thì không. Ký tự đệm tồn tại để bộ giải mã biết luồng kết thúc ở đâu khi độ dài không chia hết cho bốn, và bộ giải mã của trình duyệt đòi hỏi điều đó. Nhiều hệ thống lược bỏ nó vì dấu bằng gây vướng trong URL và tên tệp, nên nếu chuỗi của bạn thuộc loại ấy, hãy thêm dấu bằng cho tới khi độ dài chia hết cho bốn là giải được. Trường hợp dư đúng một ký tự thì không chữa được bằng cách này, vì một ký tự Base64 chỉ mang sáu bit, không đủ dựng một byte.
Dán dữ liệu nhạy cảm vào trang này có an toàn không?
Việc giải mã chạy ngay trong trình duyệt và không có gì được gửi đi đâu cả, nên rủi ro không nằm ở bản thân trang này. Rủi ro nằm ở mọi thứ còn lại trên máy: tiện ích mở rộng của trình duyệt có thể đọc nội dung trang, còn bí mật đã dán thường sống sót trong lịch sử bảng nhớ tạm. Với một thông tin đăng nhập đang chạy thật, hãy giải mã ngay trên máy. Công cụ dòng lệnh đã có sẵn trên mọi máy Unix, và PowerShell cũng có cách tương đương.
Làm sao giải mã một data URI?
Hãy bóc tiền tố trước. Một data URI gồm chữ data, rồi một kiểu MIME, rồi dấu hiệu cho biết phần tải là Base64, rồi chính phần tải đó, và chỉ phần cuối cùng ấy mới giải mã được. Xoá hết mọi thứ tính đến cả dấu phẩy rồi dán phần còn lại. Cắt thừa hoặc thiếu một ký tự chính là nguyên nhân quen thuộc khiến việc giải mã sau đó hỏng.