Bộ giải mã Base64
Bộ giải mã Base64 là công cụ miễn phí giúp khôi phục dữ liệu gốc từ nội dung đã được mã hóa Base64.
Mã hóa Base64 là gì và được dùng để làm gì?
Base64 là cách biểu diễn dữ liệu nhị phân bằng một tập hợp giới hạn gồm các ký tự văn bản có thể in được. Cách mã hóa này ra đời vì một số hệ thống được thiết kế để truyền văn bản an toàn nhưng không thể xử lý mọi byte tùy ý một cách đáng tin cậy.
Base64 tiêu chuẩn sử dụng chữ cái viết hoa, chữ cái viết thường, chữ số, dấu cộng và dấu gạch chéo xuôi. Dấu bằng có thể xuất hiện ở cuối để làm phần đệm. Quá trình mã hóa làm tăng kích thước dữ liệu vì cứ ba byte đầu vào sẽ trở thành bốn ký tự Base64.
Base64 là phương thức mã hóa biểu diễn dữ liệu, không phải mã hóa bảo mật. Bất kỳ ai có giá trị đã mã hóa đều có thể giải mã mà không cần mật khẩu hay khóa bí mật, vì vậy Base64 không bảo vệ tính bí mật. Đừng xem giá trị Base64 là nơi an toàn để lưu mật khẩu, khóa API hoặc thông tin cá nhân.
Cách dùng Bộ giải mã Base64
Dán một giá trị Base64 vào công cụ và giải mã, sau đó xem kết quả trong trường Base64 đã giải mã. Máy chủ thực hiện việc chuyển đổi bằng hàm base64_decode của PHP.
Dữ liệu đầu vào được gửi tới máy chủ qua HTTPS và không được lưu trữ. Quá trình xử lý diễn ra trên máy chủ chứ không chỉ trong trình duyệt, vì vậy đừng gửi nội dung nhạy cảm trừ khi bạn được phép chuyển nội dung đó cho một dịch vụ bên ngoài.
Base64 bảo toàn các byte chứ không bảo toàn ý nghĩa. Số, khoảng trắng và dấu câu đơn giản là một phần của chuỗi byte ban đầu. Chữ có dấu và các hệ chữ không phải Latin cũng có thể được mã hóa, nhưng những byte sau khi giải mã phải được diễn giải bằng đúng bảng mã ký tự, thường là UTF-8 đối với nội dung web hiện đại.
Ví dụ cụ thể và cách chọn định dạng
Đây là một ví dụ Base64 tiêu chuẩn đơn giản:
Đầu vào: SGVsbG8=
Đầu ra: Hello
Dấu bằng ở cuối là phần đệm. Dấu này giúp hoàn thiện một khối Base64 gồm bốn ký tự và không đại diện cho ký tự bổ sung nào trong kết quả đã giải mã.
Có hai biến thể bảng chữ cái phổ biến:
- Base64 tiêu chuẩn sử dụng + và /. Biến thể này thường gặp trong email MIME, URI dữ liệu và nhiều API dựa trên JSON.
- Base64url dùng - và _ thay cho hai ký tự trên. Biến thể này dành cho URL, tham số truy vấn và token, nơi + và / có thể gây bất tiện. Phần đệm thường được lược bỏ.
Hãy chọn biến thể mà hệ thống tạo ra giá trị yêu cầu. Bộ giải mã tiêu chuẩn có thể đọc sai hoặc từ chối dữ liệu Base64url nếu bảng chữ cái chưa được chuyển đổi trước. Nếu cần thực hiện quy trình ngược lại, hãy dùng Bộ mã hóa Base64. Với dữ liệu hình ảnh đã mã hóa, công cụ Base64 sang Hình ảnh có thể hữu ích hơn so với việc xem dữ liệu nhị phân thô dưới dạng văn bản.
Base64 thường xuất hiện ở đâu?
Bạn thường gặp Base64 khi dữ liệu nhị phân phải đi qua một định dạng thiên về văn bản. Giá trị này có thể xuất hiện riêng lẻ hoặc là một phần của tài liệu lớn hơn.
- URI dữ liệu nhúng hình ảnh nhỏ, phông chữ hoặc tài nguyên khác vào HTML và CSS, thường theo sau tiền tố như data:image/png;base64,.
- Payload JSON đôi khi chứa tệp, chứng chỉ hoặc dữ liệu mật mã dưới dạng chuỗi Base64 vì JSON không có kiểu giá trị nhị phân riêng.
- Email MIME dùng Base64 cho tệp đính kèm và những phần thư không thể truyền an toàn dưới dạng văn bản thuần túy.
- Chuỗi truy vấn và token web có thể dùng Base64url để tránh các ký tự mang ý nghĩa đặc biệt trong URL.
- Tệp cấu hình và biến môi trường đôi khi chứa Base64 vì hệ thống xung quanh yêu cầu văn bản có thể in được.
Tên miền quốc tế hóa trông giống dữ liệu đã mã hóa cần một bộ giải mã khác. Nhãn tên miền bắt đầu bằng xn-- sử dụng Punycode, không phải Base64. Đưa nhãn đó vào Bộ giải mã Base64 sẽ không khôi phục được tên miền Unicode mong muốn.
Vì sao giải mã Base64 thất bại hoặc cho ra ký tự khó hiểu?
Quá trình giải mã Base64 thường thất bại hoặc cho ra nội dung không thể đọc được vì dữ liệu đầu vào dùng sai biến thể, bị thiếu, đã được mã hóa hai lần hoặc thực chất là dữ liệu nhị phân chứ không phải văn bản.
- Sai bảng chữ cái xảy ra khi dữ liệu Base64url chứa - hoặc _ bị xử lý như Base64 tiêu chuẩn, hoặc ngược lại.
- Phần đệm bị thiếu hoặc hỏng có thể khiến khối cuối cùng không hoàn chỉnh. Một số bộ giải mã chấp nhận dữ liệu không có phần đệm, nhưng nếu số ký tự chia cho bốn có số dư là một thì dữ liệu đó không thể tạo thành Base64 hợp lệ.
- Mã hóa hai lần khiến kết quả sau lần giải mã đầu tiên vẫn trông giống một chuỗi Base64. Có thể cần giải mã lần thứ hai nếu nguồn đã cố ý mã hóa dữ liệu hai lần.
- Đầu ra nhị phân là kết quả bình thường đối với hình ảnh, PDF, tệp nén và byte đã mã hóa bảo mật. Mở các byte này dưới dạng văn bản sẽ tạo ra ký hiệu hoặc ký tự thay thế.
- Sai bảng mã văn bản khiến các byte hợp lệ sau khi giải mã hiển thị không đúng. Chẳng hạn, dữ liệu UTF-8 bị diễn giải thành Windows-1252 có thể biến các chữ có dấu thành văn bản lỗi mã.
- Nội dung thừa bao quanh có thể gồm tiền tố URI dữ liệu, dấu ngoặc kép, ký tự thoát JSON hoặc mã hóa phần trăm trong URL. Những phần này cần được loại bỏ trước.
Chế độ base64_decode mặc định của PHP không nghiêm ngặt và có thể loại bỏ các ký tự nằm ngoài bảng chữ cái tiêu chuẩn. Nhờ đó, hàm có thể chấp nhận dấu xuống dòng trong dữ liệu đầu vào được định dạng theo MIME, nhưng cũng có thể che giấu lỗi sao chép thay vì báo lỗi rõ ràng. Nếu kết quả không như mong đợi, hãy đối chiếu với định dạng nguồn và kiểm tra từng ký tự trong giá trị ban đầu.
Câu hỏi thường gặp
Base64 có phân biệt chữ hoa và chữ thường không?
Có. Chữ hoa và chữ thường đại diện cho các giá trị khác nhau trong bảng chữ cái Base64. Việc đổi kiểu chữ chỉ để giá trị trông đồng nhất sẽ làm hỏng các byte sau khi giải mã.
Có thể dùng Bộ giải mã Base64 để giải mã JWT không?
JSON Web Token thường gồm các phần được mã hóa bằng Base64url và ngăn cách bằng dấu chấm. Bạn phải xử lý riêng từng phần và có thể cần khôi phục phần đệm đã bị lược bỏ. Đọc được payload không có nghĩa là chữ ký của token đã được xác minh, cũng không chứng minh nội dung trong đó là xác thực.
Dữ liệu Base64 sau khi giải mã có thể chứa virus hoặc tệp độc hại không?
Có, vì Base64 có thể biểu diễn bất kỳ byte nào, bao gồm tệp thực thi, tập lệnh hoặc tài liệu độc hại. Bản thân việc giải mã không chạy nội dung, nhưng lưu hoặc mở một kết quả không rõ nguồn gốc có thể không an toàn. Hãy kiểm tra loại tệp dự kiến và nguồn dữ liệu trước khi xử lý đầu ra nhị phân.
Vì sao kết quả giải mã có ký tự null?
Byte null có thể xuất hiện trong định dạng nhị phân và trong văn bản được mã hóa bằng UTF-16, nơi nhiều ký tự Latin được ghép với một byte bằng không. Nếu nguồn cho biết đây là văn bản, hãy kiểm tra bảng mã ký tự thay vì xóa các byte null, vì việc xóa chúng có thể làm hỏng dữ liệu.
Base64 có phần mở rộng tệp cố định không?
Không. Base64 là một cách biểu diễn dữ liệu, không phải định dạng tệp, nên không có phần mở rộng bắt buộc. Các byte sau khi giải mã mới quyết định kết quả là PNG, PDF, tệp nén ZIP, tệp văn bản hay loại dữ liệu khác.
Kiểm tra lần cuối
Hãy xác nhận rằng bạn chỉ sao chép giá trị đã mã hóa, xác định giá trị đó dùng Base64 tiêu chuẩn hay Base64url và giữ nguyên chữ hoa, chữ thường. Nếu kết quả không thể đọc được, hãy kiểm tra xem nội dung có cần được mở dưới dạng tệp thay vì hiển thị như văn bản hay không. Đừng cho rằng một giá trị giải mã thành công là đáng tin cậy hoặc được bảo mật.
Các công cụ tương tự
Công cụ phổ biến
Dễ dàng tạo chữ ký tùy chỉnh của riêng bạn và tải xuống nó một cách dễ dàng.
Lấy kích thước của một văn bản theo Byte (B), Kilobyte (KB) hoặc Megabyte (MB).
Sử dụng công cụ ping của chúng tôi để kiểm tra nhanh chóng và hiệu quả trạng thái cùng thời gian phản hồi của bất kỳ trang web, máy chủ hoặc cổng nào.
Công cụ tra cứu IP của Digily Link cung cấp thông tin chi tiết về mọi địa chỉ IP. Hãy dùng dịch vụ trực tuyến miễn phí này để nhận dữ liệu IP toàn diện.
Tạo ngay liên kết WhatsApp miễn phí bằng Trình tạo liên kết WhatsApp của chúng tôi. Thêm tin nhắn tùy chỉnh và bắt đầu trò chuyện chỉ với một lần nhấp, không cần đăng nhập hay viết mã.