Công cụ Mã hóa / Giải mã Base64 Trực tuyến
Bạn cần chuyển đổi văn bản dễ đọc sang định dạng Base64 để sử dụng trong tiêu đề HTTP, hoặc ngược lại, giải mã nội dung của API token? Công cụ Mã hóa & Giải mã Văn bản Base64 của chúng tôi là một công cụ chuyên dụng để làm việc với các chuỗi văn bản, có thể xử lý cả những vấn đề phức tạp như dấu câu (diacritics) hoặc các ký tự đặc biệt.
Bạn đang làm việc với hình ảnh?
Nếu mã của bạn bắt đầu bằngdata:image/png...hoặc bạn muốn chuyển đổi tệp thành văn bản, công cụ này sẽ chỉ hiển thị các ký tự vô nghĩa. Vui lòng sử dụng công cụ chuyên dụng của chúng tôi để chuyển đổi sang hình ảnh.
Định dạng Base64 hoạt động như thế nào?
Nhiều người sử dụng Base64 hàng ngày, nhưng ít ai biết cách nó hoạt động “bên dưới lớp vỏ”. Đó không phải là phép thuật, mà là toán học đơn giản với các bit.
Văn bản thông thường trong máy tính được lưu trữ theo 8 bit (1 byte). Tuy nhiên, Base64 sử dụng một “bảng chữ cái” gồm 64 ký tự (A-Z, a-z, 0-9, +, /). Vì 2^6 = 64, một ký tự Base64 đại diện chính xác 6 bit thông tin.
Quá trình chuyển đổi (Thuật toán):
- Lấy ba ký tự từ văn bản của bạn (3 × 8 bit = 24 bit).
- 24 bit này được chia thành bốn nhóm, mỗi nhóm 6 bit.
- Mỗi nhóm được gán một ký tự từ bảng Base64.
Hệ quả: Bởi vì chúng ta chuyển đổi từ 3 ký tự thành 4 ký tự, chuỗi Base64 kết quả luôn dài hơn khoảng 33% so với văn bản gốc.
Vấn đề bộ ký tự: Tại sao các công cụ chuyển đổi Base64 thông thường làm hỏng tiếng Séc (Czech)?
Nếu bạn đã từng thử mã hóa từ “Kůň” trong console trình duyệt bằng hàm btoa('Kůň'), bạn có thể đã gặp lỗi: String contains characters outside of the Latin1 range.
Base64 ban đầu được thiết kế cho các ký tự ASCII 7 bit. Tuy nhiên, tiếng Séc (Czech), biểu tượng cảm xúc và các ký hiệu đặc biệt khác (UTF-8) chiếm nhiều byte hơn trong bộ nhớ (multibyte characters).
- Chữ
a= 1 byte. - Chữ
ř= 2 byte. - Biểu tượng cảm xúc 🚀 = 4 byte.
Công cụ của chúng tôi giải quyết vấn đề này. Trước khi mã hóa sang Base64, chúng tôi chuyển đổi văn bản thành một chuỗi byte UTF-8 một cách chính xác. Nhờ đó, bạn có thể an toàn mã hóa các đối tượng JSON, văn bản tiếng Séc và các ký hiệu hiện đại mà không sợ mất mát dữ liệu.
Mã hóa văn bản Base64 được sử dụng ở đâu?
Trong khi hình ảnh trong Base64 chủ yếu được sử dụng để nhúng vào CSS/HTML, Base64 văn bản có mục đích sử dụng hoàn toàn khác trong các hệ thống backend:
1. HTTP Basic Authentication
Khi bạn đăng nhập vào một API, tiêu đề thường trông như thế này:
Authorization: Basic dXppdmF0ZWw6aGVzbG8=
Đằng sau đoạn mã này chỉ đơn giản là tên người dùng và mật khẩu được kết hợp theo định dạng tên_người_dùng:mật_khẩu. Công cụ của chúng tôi cho phép bạn dễ dàng tạo hoặc kiểm tra các tiêu đề này.
2. JSON Web Tokens (JWT)
Các ứng dụng web hiện đại sử dụng JWT để đăng nhập. Một token như vậy trông giống như ba chuỗi dài được phân tách bằng dấu chấm. Phần dữ liệu (Payload) là một đối tượng JSON thông thường được mã hóa bằng Base64.
- Mẹo: Thử dán phần giữa của JWT token của bạn vào đây và giải mã nó. Bạn sẽ thấy chính xác dữ liệu mà ứng dụng lưu trữ về bạn (ví dụ: ID người dùng, thời hạn hết hạn).
3. Tệp cấu hình (Kubernetes Secrets)
Các nền tảng như Kubernetes lưu trữ dữ liệu bí mật (Secrets) trong các tệp cấu hình YAML bằng Base64. Đây không phải là mã hóa, mà là một cách để lưu trữ dữ liệu nhị phân hoặc văn bản có các ký tự gây vấn đề (dòng mới, dấu ngoặc kép) vào một tệp văn bản.
”Mã hóa Base64 an toàn cho URL” là gì và tại sao nó quan trọng?
Bảng chữ cái Base64 tiêu chuẩn chứa các ký tự + (dấu cộng) và / (dấu gạch chéo). Cả hai ký tự này đều có ý nghĩa đặc biệt trong địa chỉ URL:
/dùng để phân tách thư mục.+thường được hiểu là dấu cách.
Nếu bạn gửi Base64 tiêu chuẩn trong một tham số URL (ví dụ: site.com?token=ab/cd+ef), máy chủ có thể đọc dữ liệu sai.
Giải pháp (Chế độ URL Safe): Công tắc của chúng tôi kích hoạt biến thể Base64URL (theo RFC 4648), thực hiện các thay đổi sau:
+được thay đổi thành-(dấu gạch ngang)./được thay đổi thành_(dấu gạch dưới).- Các ký tự
=(padding) không cần thiết trong URL sẽ bị loại bỏ ở cuối.
Lầm tưởng: Base64 không phải là mã hóa!
Điều quan trọng là phải nhận ra sự khác biệt cơ bản mà người mới bắt đầu thường nhầm lẫn:
- Mã hóa (Encoding - Base64): Dùng để truyền dữ liệu. Nó giống như đóng gói một món đồ vào vali để không bị vỡ trên đường đi. Bất kỳ ai tìm thấy vali đều có thể mở nó (giải mã) và xem nội dung. Nó không an toàn cho dữ liệu bí mật.
- Mật mã hóa (Encryption - AES, RSA): Khóa dữ liệu bằng một khóa. Không có khóa, bạn không thể truy cập nội dung.
- Hàm băm (Hashing - SHA, MD5): Một quá trình một chiều (ví dụ: để lưu trữ mật khẩu). Không thể lấy lại văn bản gốc từ kết quả.
Nếu bạn cần gửi mật khẩu hoặc thông tin nhạy cảm, chỉ Base64 thôi là không đủ. Bạn phải sử dụng HTTPS (SSL/TLS), cái sẽ mã hóa quá trình truyền dữ liệu.