fixmint
VI

Base64 là gì: vì sao dữ liệu lớn hơn và cách giải mã

Tác giả: · · cập nhật 8 tháng 11, 2026 · 5 phút đọc

Base64 ghi dữ liệu nhị phân dưới dạng văn bản thuần túy, dùng 64 ký tự: A đến Z, a đến z, 0 đến 9, cùng với + và /. Cứ ba byte được chuyển thành bốn ký tự, nên văn bản dài hơn dữ liệu gốc khoảng một phần ba. Người ta dùng Base64 khi định dạng chỉ chấp nhận văn bản, ví dụ như URL dữ liệu trong trang web, trường JSON hoặc tệp đính kèm email.

Mã hóa và giải mã Base64Đọc hoặc tạo chuỗi Base64Dùng miễn phí

Vì sao định dạng văn bản cần Base64

Nhiều định dạng chỉ được thiết kế cho văn bản. Nội dung email, tệp JSON và tệp CSS có thể chứa chữ cái và ký hiệu an toàn, nhưng một ảnh thô hay tệp zip chứa các giá trị byte mà một số hệ thống có thể đổi, cắt ngắn hoặc hiểu nhầm thành mã điều khiển. Base64 chỉ dùng những ký tự mà mọi hệ thống văn bản đều truyền đi nguyên vẹn, nên dữ liệu đến nơi còn nguyên. Chuẩn này được định nghĩa trong RFC 4648.

Base64 chỉ là một kiểu biểu diễn dữ liệu, không phải là bí mật. Ai cũng có thể giải mã mà không cần khóa, vì vậy tuyệt đối không dùng nó để giấu mật khẩu hay dữ liệu cá nhân.

Ba byte thành bốn ký tự thế nào

Lấy từ Man, gồm ba byte: 77, 97 và 110 ở hệ thập phân. Cả ba byte cộng lại có 24 bit. Chia 24 bit thành bốn nhóm sáu bit, mỗi nhóm là một số từ 0 đến 63, trỏ tới một ký tự trong bảng chữ cái. Man thành TWFu.

Sáu bit chỉ biểu diễn được 64 giá trị, nên bốn ký tự mang được ba byte. Vì vậy kết quả lớn hơn đầu vào khoảng một phần ba, chưa tính các ngắt dòng được thêm vào.

Khi dữ liệu không chia hết cho ba byte, bộ mã hóa sẽ thêm dấu = vào cuối. Ma, gồm hai byte, thành TWE=, còn M, một byte, thành TQ==. Phần đệm này cho bộ giải mã biết nhóm cuối có bao nhiêu byte.

Văn bản phải được mã hóa UTF-8 trước

Base64 làm việc trên byte, còn văn bản được tạo từ ký tự. Một ký tự như é hay ✓ được lưu bằng nhiều hơn một byte trong UTF-8, bảng mã được dùng phổ biến trên web. Hàm trình duyệt btoa() nhận một chuỗi và coi mỗi ký tự là một byte, nên nó lỗi với các ký tự ngoài dải Latin cơ bản. Gọi nó với dấu tích sẽ ném ra InvalidCharacterError.

Cách khắc phục là chuyển văn bản thành byte UTF-8 trước, rồi mới mã hóa các byte đó. Chuỗi héllo ✓ có 10 byte trong UTF-8, và Base64 của nó là aMOpbGxvIOKckw==. Công cụ Base64 thực hiện bước này cho bạn. Khi giải mã, công cụ đọc lại các byte dưới dạng UTF-8. Nếu các byte không phải văn bản UTF-8 hợp lệ, công cụ coi chúng là một tệp và cung cấp liên kết tải xuống.

Base64 an toàn cho URL

Bảng chữ cái chuẩn chứa + và /. Trong URL, + có thể đại diện cho dấu cách, còn / phân tách các phần của đường dẫn, nên chuỗi Base64 có thể làm hỏng liên kết. Dạng an toàn cho URL (RFC 4648, mục 5) dùng - và _ thay thế, và thường bỏ phần đệm =. Hãy dùng dạng này khi chuỗi được đưa vào URL, tên tệp hoặc token. Bộ giải mã chấp nhận cả hai dạng, có hoặc không có đệm.

Nếu Base64 được lấy từ một liên kết, giải mã URL trước. Một giá trị đã được mã hóa phần trăm trong liên kết phải được giải mã trước khi có thể đọc Base64 của nó. Hướng dẫn mã hóa phần trăm giải thích các quy tắc cho liên kết.

Trường hợp phổ biến nhất là token đăng nhập: JSON Web Token gồm ba phần Base64url nối với nhau bằng dấu chấm, lần lượt là header, dữ liệu và chữ ký. Bộ giải mã JWT tách một token và hiển thị header và dữ liệu dưới dạng JSON dễ đọc.

URL dữ liệu và hình ảnh

URL dữ liệu đặt cả tệp vào ngay trong đường dẫn. Cấu trúc là data:, rồi đến loại media, rồi ;base64, sau đó là dấu phẩy và dữ liệu. Một ảnh nhỏ sẽ thành data:image/png;base64, theo sau là các byte đã mã hóa. Trang web và tệp CSS đều chấp nhận dạng này, giúp tiết kiệm một yêu cầu tải cho một biểu tượng nhỏ.

Cái giá là kích thước. Dữ liệu lớn hơn khoảng một phần ba, và nó nằm trong trang hoặc tệp CSS thay vì là một tệp riêng mà trình duyệt có thể lưu đệm. Chỉ dùng URL dữ liệu cho ảnh nhỏ, đừng dùng cho ảnh chụp lớn. Nén ảnh chụp trước khi mã hóa nếu tệp lớn.

Khi bạn giải mã Base64 trong công cụ, công cụ xem các byte đầu tiên của dữ liệu. Các tệp PNG, JPEG, GIF và WebP đều bắt đầu bằng một chữ ký đã biết, nên công cụ hiển thị bản xem trước và cung cấp liên kết tải xuống. URL dữ liệu có loại ảnh cũng được hiển thị thành hình ảnh.

Cách thực hiện với fixmint

  1. Chọn Mã hóa hoặc Giải mã phía trên Văn bản hoặc Base64, rồi dán văn bản hoặc Base64 của bạn vào.
  2. Đánh dấu Bảng chữ cái an toàn cho URL, không đệm = cho token, tên tệp và liên kết. Bộ giải mã chấp nhận cả hai dạng dù có đánh dấu hay không.
  3. Để tạo URL dữ liệu từ một tệp, thả tệp vào vùng kéo thả và đánh dấu Với tệp: xuất một URL data:.
  4. Sao chép kết quả. Nếu các byte đã giải mã là một tệp chứ không phải văn bản, hãy dùng liên kết tải xuống mà công cụ cung cấp.

Các lỗi giải mã thường gặp

  • Ký tự không được phép. Đầu vào chứa một ký tự nằm ngoài 64 ký tự, chẳng hạn dấu ngoặc kép từ một câu đã sao chép. Hãy kiểm tra văn bản đến từ đâu. Khoảng trắng không độ rộng trong văn bản sao chép cũng gây ra lỗi tương tự, nên hãy xóa ký tự ẩn rồi thử lại. Hướng dẫn về ký tự ẩn giải thích chúng xuất hiện từ đâu.
  • Độ dài sai. Thiếu hoặc thừa một ký tự, thường là do bản sao bị cắt ngắn.
  • Ngắt dòng và khoảng trắng. Email (MIME) ngắt Base64 cứ mỗi 76 ký tự. Bộ giải mã loại bỏ khoảng trắng và ngắt dòng, nên bạn có thể dán văn bản đã bị ngắt dòng như vậy.
  • Thiếu phần đệm. Một số hệ thống bỏ dấu =. Bộ giải mã sẽ thêm lại.

Trường hợp đặc biệt

  • Kết quả giải mã trông vô nghĩa. Có thể đó là một tệp chứ không phải văn bản. Tệp zip, PDF hoặc chương trình giải mã thành các byte không đọc được như văn bản. Công cụ cung cấp những thứ đó dưới dạng tải xuống.
  • Đầu vào rất lớn. Toàn bộ tệp được giữ trong trình duyệt khi mã hóa hoặc giải mã, nên tệp rất lớn có thể chậm, và trên điện thoại có thể bị lỗi.

Câu hỏi nhanh

Base64 có giống mã hóa bảo mật không?

Không. Đó là phép biểu diễn có thể đảo ngược, không dùng khóa, nên ai cũng giải mã được.

Vì sao Base64 của tôi dài hơn tệp?

Mỗi nhóm ba byte thành bốn ký tự, nên văn bản lớn hơn khoảng một phần ba.

Vì sao chuỗi Base64 đã sao chép không giải mã được?

Thường là một ký tự bị mất hoặc bị thêm trong lúc sao chép, chẳng hạn một ngắt dòng sai chỗ hoặc thiếu ký tự cuối. Hãy sao chép lại từ nguồn.

Được dịch từ Bản tiếng Anh với sự hỗ trợ của AI.

Bình luận

    Chưa có bình luận nào. Hãy là người đầu tiên.

    Đánh giá của bạn (không bắt buộc)

    Email của bạn không bao giờ được hiển thị hoặc lưu lại.

    Bìa của How to Remain Valuable When Intelligence Becomes CheapHow to Remain Valuable When Intelligence Becomes Cheap

    224 trang về những lợi thế của con người, kinh tế và chiến lược vẫn khan hiếm khi AI có thể làm phần lớn công việc tư duy.

    $3.84Mua trên GumroadBản tiếng Anh