🔐

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

Trình mã hóa và giải mã Base64 trực tuyến miễn phí. Mã hóa văn bản hoặc tệp sang Base64 hoặc giải mã Base64 về văn bản có thể đọc.

Nguồn đầu vào

Thả tệp hoặc Duyệt

Kết quả

Riêng tư và an toàn

Xử lý hoàn toàn trong trình duyệt của bạn. Dữ liệu không bao giờ được tải lên máy chủ.

Hỗ trợ tệp

Dễ dàng chuyển đổi hình ảnh, tài liệu hoặc tệp nhị phân thành chuỗi Base64.

Sẵn sàng ngoại tuyến

Hoạt động không cần kết nối internet sau khi đã tải.

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

Mã hóa Base64 là gì và nó được dùng để làm gì?

Base64 là một sơ đồ mã hóa nhị phân sang văn bản (binary-to-text) chuyển đổi dữ liệu nhị phân thành chuỗi ký tự ASCII sử dụng 64 ký tự (A-Z, a-z, 0-9, +, /). Nó chủ yếu được sử dụng để truyền dữ liệu nhị phân qua các giao thức dựa trên văn bản như HTTP, SMTP hoặc trong các payload JSON. Các ứng dụng phổ biến bao gồm tệp đính kèm email qua MIME, nhúng hình ảnh trong HTML và CSS dưới dạng data URL, mã hóa payload trong JSON Web Token (JWT) và lưu trữ dữ liệu nhị phân trong các cột cơ sở dữ liệu dạng văn bản.

Base64 có phải là mã hóa (encryption) không? Nó có an toàn không?

Không. Base64 là một sơ đồ mã hóa (encoding), không phải mã hóa bảo mật (encryption). Bất kỳ ai có chuỗi Base64 đều có thể giải mã nó trở về dữ liệu gốc ngay lập tức mà không cần bất kỳ khóa, mật khẩu hay bí mật nào. Nó không cung cấp tính bảo mật, tính toàn vẹn hay xác thực. Hãy coi nó như một cách biểu diễn cùng một dữ liệu dưới định dạng khác — giống như dịch tiếng Anh sang mã Morse. Nếu bạn cần bảo vệ dữ liệu nhạy cảm, hãy sử dụng thuật toán mã hóa bảo mật phù hợp (chẳng hạn như AES) trước, sau đó tùy chọn mã hóa các byte đã mã hóa bằng Base64 để truyền tải.

Tại sao Base64 đôi khi kết thúc bằng dấu = hoặc ==?

Ký tự = là phần đệm (padding). Base64 xử lý dữ liệu đầu vào theo nhóm 3 byte (24 bit), tạo ra 4 ký tự Base64 cho mỗi nhóm. Khi độ dài đầu vào không phải là bội số của 3 byte, quá trình mã hóa sẽ thêm các ký tự đệm = để làm cho đầu ra là bội số của 4 ký tự. Một dấu = được thêm khi còn 2 byte và hai dấu = được thêm khi chỉ còn 1 byte. Ví dụ, "Man" (3 byte) mã hóa thành "TWFu" không có đệm, nhưng "Ma" (2 byte) mã hóa thành "TWE=" và "M" (1 byte) mã hóa thành "TQ==".

Base64 có làm dữ liệu lớn hơn không? Nó thêm bao nhiêu chi phí?

Có, mã hóa Base64 làm tăng kích thước dữ liệu khoảng 33%. Cứ mỗi 3 byte đầu vào nhị phân, đầu ra là 4 byte, cộng với phần đệm tùy chọn. Vì vậy, một tệp nhị phân 3 MB sẽ trở thành khoảng 4 MB khi được mã hóa Base64. Đây là sự đánh đổi để có thể truyền dữ liệu nhị phân qua các kênh chỉ hỗ trợ văn bản. So với các phương pháp mã hóa nhị phân sang văn bản khác, Base64 tương đối hiệu quả — ví dụ, mã hóa thập lục phân (hexadecimal) thêm 100% chi phí.

Sự khác biệt giữa Base64 tiêu chuẩn và Base64url là gì?

Base64 tiêu chuẩn sử dụng + và / trong bảng chữ cái của nó và = cho phần đệm. Base64url (Base64 an toàn cho URL) thay + bằng - và / bằng _, đồng thời thường bỏ qua phần đệm. Điều này giúp Base64url an toàn khi sử dụng trong URL, tham số truy vấn và tên tệp mà không cần mã hóa phần trăm (percent-encoding) bổ sung. Base64url được định nghĩa trong RFC 4648 và được sử dụng rộng rãi trong JSON Web Token (JWT), token OAuth và API web. Ví dụ, một chuỗi Base64 tiêu chuẩn như Pj4+Pz8/Pw== trở thành Pj4-Pz8_Pw trong Base64url.

Data URL Base64 là gì và nó được sử dụng như thế nào trong HTML và CSS?

Data URL là một sơ đồ URI nhúng dữ liệu trực tiếp vào tài liệu web. Đối với hình ảnh, định dạng là data:image/png;base64,iVBORw0KGgo.... Nó có thể được sử dụng thay cho URL tệp trong thẻ HTML <img> và thuộc tính CSS background-image. Data URL loại bỏ nhu cầu thực hiện một yêu cầu HTTP riêng để tải hình ảnh, điều này có thể cải thiện hiệu suất cho các tài nguyên nhỏ (thường dưới 10 KB). Tuy nhiên, chúng làm tăng kích thước tệp HTML/CSS khoảng 33% và ngăn trình duyệt lưu hình ảnh vào bộ nhớ đệm một cách độc lập.

Bạn có thể chuyển đổi bất kỳ tệp nào sang Base64 không?

Có — bất kỳ dữ liệu nhị phân nào, dù là văn bản, hình ảnh, âm thanh, video, PDF hay kho lưu trữ nén, đều có thể được mã hóa thành Base64. Quy trình giống nhau: đọc các byte thô của tệp và áp dụng thuật toán mã hóa Base64. Khi bạn giải mã chuỗi Base64, bạn nhận lại chính xác các byte gốc. Đây là cách hoạt động của tệp đính kèm email — tệp nhị phân được mã hóa Base64 trước khi gửi qua SMTP và được giải mã trở lại thành tệp gốc ở phía người nhận.

Làm thế nào để xử lý ký tự Unicode (như emoji hoặc văn bản tiếng Trung) khi mã hóa Base64 trong JavaScript?

Hàm btoa() tích hợp chỉ hoạt động với ký tự Latin-1 (ký tự một byte). Đối với chuỗi Unicode chứa emoji, ký tự tiếng Trung hoặc các ký tự đa byte khác, bạn cần chuyển đổi sang byte trước bằng API TextEncoder: Trong Node.js, lớp Buffer xử lý Unicode một cách tự nhiên: Buffer.from('Hello 你好 🚀').toString('base64') hoạt động mà không cần bất kỳ xử lý đặc biệt nào.

Công cụ liên quan

Mã hóa / Giải mã Base64 - CoolTool