Mã hóa Base64 Là Gì? Giải thích Đầy đủ
Trả lời nhanh
Mã hóa Base64 chuyển dữ liệu binary thành văn bản dùng 64 ký tự in được (A-Z, a-z, 0-9, +, /). Mỗi 3 byte input thành 4 ký tự Base64. Base64 đảo ngược được (không encryption) và tăng kích thước dữ liệu ~33%. Dùng Base64 Encoder và Decoder miễn phí.
Giới thiệu
Base64 là lược đồ mã hóa binary-to-text chuyển dữ liệu binary thành chuỗi ASCII dùng 64 ký tự in được. Được định nghĩa bởi RFC 4648 và dùng phổ biến để mã hóa dữ liệu truyền qua môi trường văn bản —tệp đính kèm email (MIME), Data URLs, phần JWT token và JSON payload chứa dữ liệu binary. Base64 là encoding, không phải encryption —hoàn toàn đảo ngược được và không yêu cầu key.
Từng bước một
-
Hiểu bộ ký tự
Base64 sử dụng 64 ký tự: A-Z (26), a-z (26), 0-9 (10), + và / (2). Ký tự = được sử dụng để đệm khi độ dài đầu vào không phải là bội số của 3. Biến thể an toàn URL thay thế + bằng - và / bằng _ và bỏ qua phần đệm.
-
Tìm hiểu cách mã hóa hoạt động
Base64 xử lý đầu vào theo khối 3 byte (24 bit). Mỗi khối 24 bit được chia thành bốn nhóm 6 bit. Mỗi giá trị 6 bit (0-63) ánh xạ tới một trong 64 ký tự. Nếu đầu vào không phải là bội số của 3 thì phần đệm (=) sẽ được thêm vào: đầu vào 1 byte → 2 Base64 ký tự + ==, 2 byte → 3 ký tự + =.
-
Hiểu chi phí kích thước
Base64 tăng kích thước dữ liệu lên khoảng 33% — cứ 3 byte sẽ trở thành 4 ký tự. Tệp 1 MB sẽ trở thành ~ 1,33 MB khi được mã hóa Base64. Chi phí chung này là sự đánh đổi để có được khả năng tương thích chỉ với văn bản.
-
Phân biệt mã hóa với mã hóa
Base64 đang mã hóa chứ không phải mã hóa. Nó có thể đảo ngược mà không cần chìa khóa - bất kỳ ai cũng có thể giải mã nó. Base64 không cung cấp tính bảo mật; nó chỉ chuyển đổi nhị phân thành văn bản để vận chuyển. Không bao giờ sử dụng Base64 để lưu trữ mật khẩu hoặc bí mật.
Ví dụ
Mã hóa văn bản
đầu vào: Hello, World!
đầu ra: SGVsbG8sIFdvcmxkIQ==
Mã hóa dữ liệu nhị phân (hiển thị dưới dạng hex)
đầu vào: Byte: 0x00 0x01 0x02
đầu ra: AAEC
URL-an toàn Base64 (kiểu JWT)
đầu vào: Standard: SGVsbG8= → URL-safe: SGVsbG8 (no padding, - and _ for + and /)
đầu ra: Được sử dụng trong mã thông báo JWT và tham số URL
Các vấn đề thường gặp
- Coi Base64 là mã hóa —Base64 có thể đảo ngược mà không cần khóa. Bất cứ ai cũng có thể giải mã nó. Không bao giờ sử dụng nó để bảo vệ dữ liệu nhạy cảm.
- Các ký tự không phải ASCII — btoa() ngây thơ sử dụng Unicode. Sử dụng TextEncode + btoa(unescape(encodeURIComponent(text))) hoặc công cụ nhận biết UTF-8.
- Loại bỏ phần đệm — phần đệm = là một phần của mã hóa. Việc xóa nó sẽ phá vỡ quá trình giải mã (mặc dù một số bộ giải mã có thể tái tạo lại nó).
- Chi phí kích thước —Base64 tăng thêm ~33% vào kích thước dữ liệu. Đối với các tệp lớn, điều này rất quan trọng; xem xét liệu việc mã hóa có cần thiết hay không.
Mẹo
- Sử dụng Base64 cho Dữ liệu URLs để nhúng các hình ảnh nhỏ vào HTML/CSS mà không cần yêu cầu HTTP riêng.
- Sử dụng URL-safe Base64 (thay + bằng -, / bằng _, dải đệm) cho mã thông báo URLs và JWT.
- Base64 không phải là mã hóa —sử dụng nó để tương thích với truyền tải chứ không phải để bảo mật.
- Sử dụng Bộ mã hóa và giải mã Base64 của chúng tôi để chuyển đổi tức thì, riêng tư trong trình duyệt của bạn.