Mã hóa và giải mã Base64 trực tuyến

Chuyển văn bản, byte hex hoặc tệp sang Base64 và giải mã Base64 trở lại thành văn bản dễ đọc. Hỗ trợ Base64URL, ngắt dòng kiểu MIME và hơn chục bảng mã, mọi thao tác đều được xử lý cục bộ trong trình duyệt của bạn.

Chạy hoàn toàn trong trình duyệt của bạn. Không có gì được tải lên.

Cách sử dụng

  1. Chọn Mã hóa hoặc Giải mã ở phía trên công cụ.
  2. Nhập hoặc dán văn bản, hoặc nhấp Mở tệp để mã hóa một tệp bất kỳ.
  3. Khi cần, hãy điều chỉnh Biến thể (tiêu chuẩn hoặc an toàn cho URL), Phần đệm, Ngắt dòng hoặc Bảng mã. Kết quả được cập nhật ngay khi bạn gõ.
  4. Nhấn Sao chép hoặc Tải xuống để lấy kết quả, hoặc nhấn nút Hoán đổi đầu vào và đầu ra để xử lý kết quả theo chiều ngược lại.

Base64 là gì?

Base64 là kiểu mã hóa nhị phân sang văn bản, biểu diễn mọi chuỗi byte bằng 64 ký tự ASCII in được: A-Z, a-z, 0-9, + và /, cùng ký tự = dùng để đệm. Nhờ đó, dữ liệu nhị phân như hình ảnh, khóa hay tệp nén có thể đi qua an toàn những hệ thống vốn được thiết kế cho văn bản, chẳng hạn email, JSON, XML, URL và HTML.

Bộ mã hóa đọc dữ liệu đầu vào theo từng nhóm ba byte (24 bit) và chia thành bốn nhóm 6 bit. Mỗi giá trị 6 bit, từ 0 đến 63, ứng với một ký tự trong bảng ký tự. Khi độ dài đầu vào không phải bội số của ba, nhóm cuối được đệm thêm một hoặc hai dấu =. Vì vậy, đầu ra Base64 luôn lớn hơn dữ liệu gốc khoảng 33%.

Base64 là một cách mã hóa dữ liệu (encoding), không phải mã hóa bảo mật (encryption). Ai cũng có thể giải mã nó, vì vậy đừng bao giờ dùng Base64 để che giấu mật khẩu hay thông tin bí mật.

Base64 và Base64URL

Base64 tiêu chuẩn dùng + và /, hai ký tự có ý nghĩa đặc biệt trong URL và tên tệp. Base64URL, được định nghĩa trong RFC 4648 mục 5, thay chúng bằng - và _ và thường lược bỏ phần đệm. Biến thể này được dùng trong JSON Web Token, OAuth và bất cứ nơi nào giá trị phải nằm trong URL. Bộ giải mã trên trang này tự động chấp nhận cả hai dạng.

Base64 tiêu chuẩnBase64URL
Ký tự ứng với giá trị 62 và 63+ /- _
Phần đệmBắt buộc có =Tùy chọn, thường được lược bỏ
An toàn trong URL và tên tệpKhôngCó
Ứng dụng điển hìnhEmail (MIME), data URI, JSON, khóa PEMJWT, OAuth, tham số URL

Các ứng dụng phổ biến của Base64

  • Tệp đính kèm email. MIME mã hóa tệp đính kèm thành Base64 và ngắt dòng sau mỗi 76 ký tự. Dùng tùy chọn Ngắt dòng để tạo đúng định dạng này.
  • Nhúng hình ảnh và tệp. Data URI đưa hình ảnh nhỏ, phông chữ hoặc biểu tượng trực tiếp vào HTML và CSS. Xem Ảnh sang Base64 và Base64 sang ảnh.
  • API và cấu hình. JSON không có kiểu dữ liệu nhị phân, nên các API gửi tệp, chữ ký và khóa dưới dạng chuỗi Base64. Kubernetes Secret cũng lưu giá trị ở dạng Base64.
  • Xác thực. Cơ chế xác thực HTTP Basic gửi username:password ở dạng Base64, còn JSON Web Token gồm ba đoạn Base64URL.
  • Chứng chỉ và khóa. Tệp PEM là dữ liệu DER được mã hóa Base64, ngắt dòng sau mỗi 64 ký tự.

Base64 trong các ngôn ngữ lập trình

Ngôn ngữMã hóaGiải mã
JavaScript (trình duyệt)btoa(binaryString)atob(base64)
Node.jsBuffer.from(str).toString('base64')Buffer.from(b64, 'base64').toString()
Pythonbase64.b64encode(data)base64.b64decode(data)
PHPbase64_encode($str)base64_decode($b64)
JavaBase64.getEncoder().encodeToString(bytes)Base64.getDecoder().decode(b64)
C#Convert.ToBase64String(bytes)Convert.FromBase64String(b64)
Gobase64.StdEncoding.EncodeToString(b)base64.StdEncoding.DecodeString(s)
Shellbase64 file.binbase64 -d file.txt

Trong trình duyệt, btoa chỉ chấp nhận ký tự đến U+00FF. Để mã hóa văn bản Unicode (chẳng hạn tiếng Việt có dấu), trước tiên hãy chuyển nó thành các byte UTF-8, ví dụ bằng TextEncoder, hoặc dùng công cụ này, vốn mặc định mã hóa văn bản theo UTF-8.

Không chỉ có Base64

Base64.is còn hỗ trợ các thành viên khác trong họ Base-N: Base32, Base58, Base62, Base85, Ascii85, basE91, Base45, hex và nhị phân. Nếu không chắc một chuỗi dùng kiểu mã hóa nào, hãy thử công cụ nhận dạng mã hóa, hoặc so sánh tất cả cùng lúc với Tất cả kiểu mã hóa.

Đặc tả

Bảng ký tựA-Z a-z 0-9 + /
Kích thước đầu ra4 ký tự cho mỗi 3 byte (khoảng 133%)
Phần đệmThêm = cho đủ bội số của 4 ký tự
Tiêu chuẩnRFC 4648, mục 4
Phân biệt hoa thườngCó

Ví dụ

Đầu vào (UTF-8)Đầu ra
Hello, World!SGVsbG8sIFdvcmxkIQ==
Base64.isQmFzZTY0Lmlz
你好5L2g5aW9

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

Dữ liệu của tôi có bị tải lên máy chủ không?

Không. Việc mã hóa và giải mã diễn ra hoàn toàn trong trình duyệt của bạn bằng JavaScript. Văn bản và tệp bạn nhập không bao giờ rời khỏi thiết bị, và công cụ vẫn hoạt động khi ngoại tuyến sau khi trang đã tải xong.

Vì sao văn bản sau khi giải mã bị lỗi ký tự?
Có thể dữ liệu là nhị phân (ví dụ hình ảnh hoặc tệp nén) chứ không phải văn bản, hoặc nó được mã hóa bằng một bảng mã khác. Hãy thử một lựa chọn khác trong Bảng mã, chọn đầu ra dạng Hex, hoặc dùng Base64 sang tệp để tải xuống và nhận dạng các byte.
Các dấu bằng ở cuối chuỗi có ý nghĩa gì?

Đó là phần đệm. Base64 hoạt động theo từng khối bốn ký tự, và dấu = lấp đầy khối cuối cùng khi độ dài đầu vào không phải bội số của ba byte. Một dấu = nghĩa là khối cuối mã hóa hai byte, hai dấu = nghĩa là khối cuối chỉ mã hóa một byte.

Dữ liệu tăng kích thước bao nhiêu sau khi mã hóa?

Base64 biến mỗi 3 byte thành 4 ký tự, nên đầu ra lớn hơn đầu vào khoảng 33%, chưa kể các ký tự xuống dòng nếu bạn bật ngắt dòng.

Base64 có phải là một hình thức mã hóa bảo mật không?

Không. Base64 chỉ thay đổi cách biểu diễn dữ liệu. Nó không có khóa và ai cũng có thể giải mã, vì vậy hãy dùng mã hóa bảo mật thực sự như AES hoặc TLS để bảo vệ thông tin nhạy cảm.

Tất cả công cụ Base64 và mã hóa

Mã hóa Base-N

Nhị phân (Base2)Văn bản sang nhị phân và ngược lại, 8 bit cho mỗi byte Bát phân (Base8)Văn bản sang giá trị byte bát phân và ngược lại, từ 000 đến 377 Thập phân (Base10)Văn bản sang giá trị byte thập phân (mã ASCII) và ngược lại Thập lục phân (Base16)Văn bản sang hex và hex sang văn bản, kèm dấu phân cách và tiền tố Base32Base32 theo RFC 4648, Base32hex, Crockford và z-base-32 Base32hexBase32 theo RFC 4648 với bảng ký tự 0-9 A-V giữ thứ tự sắp xếp Crockford Base32Base32 dễ đọc, không có I, L, O và U, kèm bộ giải mã dễ tính z-base-32Base32 chữ thường, dễ đọc cho con người, không có phần đệm Base36Chữ số và a-z, kiểu mã hóa số lớn không phân biệt hoa thường Base45Base45 theo RFC 9285 cho mã QR và chứng nhận COVID Base58Base58 kiểu Bitcoin, Flickr và Ripple, có thể kèm Base58Check Base58CheckBase58 kèm tổng kiểm tra SHA-256 kép, như trong địa chỉ Bitcoin Base62Chỉ gồm chữ số và chữ cái, cho URL rút gọn và ID Base85Base85 với bộ ký tự RFC 1924, như trong Git và Python Ascii85Ascii85 của Adobe với ký tự viết tắt z và dấu phân định tùy chọn Z85Base85 của ZeroMQ (RFC 32), an toàn trong chuỗi mã nguồn Base91basE91 của Joachim Henke, kiểu mã hóa ASCII nhỏ gọn UuencodeMã hóa Unix-to-Unix với dòng begin và end XxencodeBiến thể uuencode với bảng ký tự chỉ gồm chữ và số

Công cụ hình ảnh

Ảnh sang Base64Mã hóa mọi ảnh thành data URI, thẻ img, CSS hoặc Markdown Base64 sang ảnhGiải mã Base64 hoặc data URI thành ảnh xem trước và tệp ảnh để tải xuống PNG sang Base64PNG không mất dữ liệu, giữ độ trong suốt, dạng Base64 data:image/png JPG sang Base64Ảnh JPEG dạng Base64 data:image/jpeg, có điều chỉnh chất lượng WebP sang Base64Ảnh WebP gọn nhẹ dạng Base64 data:image/webp GIF sang Base64Ảnh GIF tĩnh và động dạng Base64 data:image/gif SVG sang Base64Đồ họa vector SVG dạng Base64 data:image/svg+xml BMP sang Base64Ảnh bitmap BMP dạng Base64, có thể chuyển sang PNG ICO sang Base64Favicon và tệp .ico dạng data URI Base64 AVIF sang Base64Ảnh AVIF nén AV1 dạng Base64 data:image/avif TIFF sang Base64Ảnh quét và ảnh in TIFF dạng văn bản Base64 Base64 sang PNGLưu chuỗi Base64 hoặc data:image/png thành tệp PNG, giữ cả độ trong suốt Base64 sang JPGGiải mã Base64 thành ảnh .jpg, có thanh trượt chất lượng khi chuyển đổi Base64 sang WebPGiải mã WebP Base64 hoặc chuyển ảnh Base64 thành tệp WebP nhỏ hơn Base64 sang GIFLưu GIF Base64 giữ nguyên ảnh động hoặc chuyển ảnh sang GIF Base64 sang SVGGiải mã biểu tượng và đồ họa SVG dạng Base64 về lại tệp .svg Base64 sang BMPGiải mã Base64 thành .bmp hoặc chuyển ảnh sang bitmap 32 bit Base64 sang ICOGiải mã biểu tượng Base64 hoặc biến ảnh Base64 thành tệp favicon.ico Base64 sang AVIFGiải mã ảnh AVIF Base64, hoặc chuyển sang AVIF nếu được hỗ trợ Base64 sang TIFFLưu bản quét Base64 thành TIFF hoặc chuyển mọi ảnh sang TIFF không nén