Công cụ
VI

Mã hóa Base64 là gì?

Base64 là cách biểu diễn mọi dữ liệu nhị phân chỉ bằng 64 ký tự in được. Bài viết này giải thích Base64 hoạt động ra sao, vì sao nó ra đời và khi nào nên (hoặc không nên) sử dụng.

Base64 trong một câu

Base64 là phương pháp mã hóa dữ liệu nhị phân thành văn bản, được định nghĩa trong RFC 4648, biểu diễn mỗi 3 byte dữ liệu bằng 4 ký tự thuộc bảng chữ cái A–Z, a–z, 0–9, + và /.

Vì sao Base64 ra đời

Nhiều hệ thống được thiết kế chỉ để xử lý văn bản: email (SMTP), JSON, XML, thuộc tính HTML, URL và terminal. Dữ liệu nhị phân thô như ảnh hay PDF có thể chứa những byte mà các hệ thống này sẽ làm sai lệch hoặc từ chối. Base64 chuyển dữ liệu thành các ký tự in được an toàn, nhờ đó dữ liệu đến nơi nguyên vẹn.

Cách mã hóa Base64 hoạt động, từng bước một

  1. Lấy các byte đầu vào: M, a, n = 77, 97, 110.
  2. Viết chúng dưới dạng 24 bit: 01001101 01100001 01101110.
  3. Chia các bit thành bốn nhóm 6 bit: 010011 010110 000101 101110 = 19, 22, 5, 46.
  4. Tra từng số trong bảng chữ cái: 19 = T, 22 = W, 5 = F, 46 = u.

Như vậy, Man trở thành TWFu. Giải mã Base64 đơn giản là thực hiện ngược lại các bước trên.

Bảng chữ cái Base64

Giá trịKý tự
0–25A–Z
26–51a–z
52–610–9
62+ (an toàn cho URL: -)
63/ (an toàn cho URL: _)
phần đệm=

Ý nghĩa của phần đệm =

Khi độ dài đầu vào không chia hết cho 3, nhóm cuối cùng sẽ được lấp đầy và đánh dấu bằng =: Ma trở thành TWE= và M trở thành TQ==. Phần đệm không bao giờ xuất hiện ở giữa một chuỗi hợp lệ.

Các biến thể của Base64

Base64 không phải là mã hóa bảo mật

Base64 không che giấu điều gì: bất kỳ ai cũng có thể giải mã ngay lập tức. Nhiều người lầm tưởng đây là một hình thức bảo vệ vì kết quả trông như chuỗi ký tự ngẫu nhiên. Hãy dùng thuật toán mã hóa thực sự như AES cho dữ liệu bí mật, và chỉ dùng Base64 để truyền các byte đã mã hóa dưới dạng văn bản.

Dung lượng tăng thêm

Độ dài sau khi mã hóa là 4 × ⌈n / 3⌉ ký tự với n byte, tức nhiều hơn bản gốc khoảng 33%. Nếu có xuống dòng kiểu MIME, dung lượng còn tăng thêm 2–3%.

Base64 được dùng ở đâu?

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

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

Không. Dữ liệu mã hóa bảo mật cần có khóa mới giải được, hàm băm (hash) thì hoàn toàn không thể đảo ngược, còn Base64 thì ai cũng giải mã được.

Vì sao lại gọi là Base64?

Vì nó dùng bảng chữ cái gồm 64 ký tự, nên mỗi ký tự mang 6 bit thông tin (26 = 64).

Làm sao biết một chuỗi có phải Base64 không?

Chuỗi Base64 chỉ chứa A–Z, a–z, 0–9, +, / (hoặc - và _), độ dài thường là bội số của 4 và có thể kết thúc bằng một hoặc hai dấu =. Cách kiểm tra nhanh nhất là dán chuỗi vào công cụ giải mã Base64 của chúng tôi.

Cập nhật lần cuối: