Base64 là phương thức convert dạng mã hóa 2 chiều từ binary sang string để có thể gửi đi được trong network một cách dễ dàng. Các binary lúc này sẽ được thể hiện bằng các ký tự mã ASCII
Lịch sử
Năm 1993, John Linn công bố thuật toán mã hóa Base64 trong tài liệu: RFC 1421 – Privacy Enhancement for Internet Electronic Mail: Part I: Message Encryption and Authentication Procedures. Tạm dịch: Tăng cường bảo mật thư điện tử: Phần I: Xác thực và mã hóa thông điệp.
Sau đó, nó đã được sửa đổi một phần vào tháng 9 năm 1993 bởi N. Borenstein trong phần: RFC 1521 – MIME (Multipurpose Internet Mail Extensions) Part I: Mechanisms for Specifying and Describing the Format of Internet Message Bodies.
Lịch sử của Base64 bắt đầu vào thời điểm khi các kỹ sư tranh luận có bao nhiêu bit trong một byte. Bây giờ chúng ta sử dụng một byte với 8 bit, nhưng trước đó đã được sử dụng một byte 7 bit, 6 bit và thậm chí 3 bit bởi vì tất cả các hệ thống lớn vào lúc đó đã tự định nghĩa, giao ước với nhau, cho đến ngày nay kỹ sư làm việc của một hệ thống lớn cũng có thể tự quy định một byte với bao nhiêu bít tùy vào hoàn cảnh họ muốn và đảm bảo sự ổn định của hệ thống. Vào thời điểm mã hóa 8 bit được công bố là một tiêu chuẩn, nhiều hệ thống đã sử dụng các tiêu chuẩn cũ và không hỗ trợ tiêu chuẩn mới. Điều này dẫn đến thực tế là một số dữ liệu đã bị mất trong quá trình chuyển đổi giữa hệ thống mới và hệ thống cũ. Ví dụ, một máy chủ thư điện tử có thể loại bỏ bit thứ 8 khi gửi mail, điều này là hoàn toàn không thể chấp nhận. Hơn nữa, có một vấn đề khác với các máy chủ thư điện tử là họ chỉ có thể gửi văn bản chứ không thể gửi dữ liệu nhị phân như: hình ảnh, video nói chung và tệp tin đa phương tiện nói riêng. Và vì vậy thuật toán Base64 được sinh ra để giải quyết những vấn đề này. Tất nhiên, theo thời gian, các bảng mã khác được phát triển, nhưng nhờ sự đơn giản và hiệu quả Base64 trở nên phổ biến nhất và được sử dụng ở hầu hết mọi nơi.
Cơ chế hoạt động
Cơ chế convert dữ liệu từ binary sang string bao gồm các bước sau:
- Chia mã nhị phân thành các khối 24 bit từ trái qua phải
- Mỗi đoạn 24 bit được nhóm thành bốn phần 6 bit mỗi phần. Nếu đoạn cuối cùng có số bit không chia hết cho 6, ta thêm các bit 0 ít nhất có thể vào cuối để chia hết. Sau khi chia hết ta được thương và tính padding = 4 – thương
- Mỗi nhóm 6 bit được chuyển đổi thành các giá trị ký tự Base64 tương ứng của chúng. Nếu padding > 0, ta thêm n ký tự = vào cuối đoạn mã hóa, n = padding tính ở trên
- Có thể đảo ngược quá trình trên để giải mã
Bảng mã hóa Base64

Ví dụ mã hóa string



Ví dụ khi mã hóa ký tự M:
- M được chuyển sang nhị phân qua bảng mã ASCII: 01001101 (77)
- Do số bit ở đây khá ngắn (8) nên sau khi chia thành các đoạn 24 bit ta vẫn chỉ được: 01001101 là các bit dư ra ở cuối cùng
- Ta cần thêm 4 bit 0 vào cuối để số bit chia hết cho 6, đoạn bit của ta bây giờ là: 010011010000 và padding = 4 – (12/6) = 2
- Chia đoạn bit trên theo mỗi nhóm 6 bit: 010011 010000, chuyển qua mã thập phân ta được 19 và 16. Convert theo bảng mã hóa Base64 ta được 2 ký tự: TQ. Do padding = 2 nên kết quả cuối cùng là: TQ==
Ứng dụng
Base64 được sử dụng phổ biến nhất để mã hóa dữ liệu nhị phân, ví dụ: hình ảnh hoặc tệp âm thanh, … để nhúng vào HTML, CSS, EML và các tài liệu văn bản khác. Ngoài ra, Base64 được sử dụng để mã hóa dữ liệu có thể không được hỗ trợ hoặc bị hỏng trong quá trình truyền, lưu trữ.









(3 lượt thả tim)



