Cách hoạt động của Mã hóa Base64

Mục lục:

Cách hoạt động của Mã hóa Base64
Cách hoạt động của Mã hóa Base64
Anonim

Mã hóaBase64 là một quá trình chuyển đổi dữ liệu nhị phân sang định dạng chuỗi ASCII bằng cách chuyển đổi dữ liệu nhị phân đó thành biểu diễn ký tự 6 bit. Phương pháp mã hóa Base64 được sử dụng khi dữ liệu nhị phân, chẳng hạn như hình ảnh hoặc video, được truyền qua các hệ thống được thiết kế để truyền dữ liệu ở định dạng văn bản thuần túy (ASCII).

Tại sao Mã hóa Base64 được Sử dụng?

Nhu cầu mã hóa Base64 xuất phát từ các vấn đề xảy ra khi phương tiện được truyền ở định dạng nhị phân thô đến các hệ thống dựa trên văn bản.

Vì các hệ thống dựa trên văn bản (như email) diễn giải dữ liệu nhị phân là một loạt các ký tự, bao gồm các ký tự lệnh đặc biệt, nên phần lớn dữ liệu nhị phân được truyền đến phương tiện truyền tải bị các hệ thống đó hiểu sai và bị mất hoặc bị hỏng trong quá trình truyền tải.

Image
Image

Một phương pháp mã hóa loại dữ liệu nhị phân này để tránh các sự cố truyền tải như vậy là gửi nó dưới dạng văn bản ASCII thuần túy ở định dạng được mã hóa Base64. Đây là một trong những kỹ thuật được tiêu chuẩn MIME sử dụng để gửi dữ liệu không phải là văn bản thuần túy.

Nhiều ngôn ngữ lập trình, chẳng hạn như PHP và Javascript, bao gồm các chức năng mã hóa và giải mã Base64 để diễn giải dữ liệu được truyền bằng cách sử dụng mã hóa Base64.

Logic Mã hóa Base64

Mã hóaBase64 chia dữ liệu nhị phân thành các phân đoạn 6 bit gồm 3 byte đầy đủ và biểu thị chúng dưới dạng các ký tự có thể in được trong tiêu chuẩn ASCII. Nó thực hiện điều đó về cơ bản trong hai bước.

Bước đầu tiên là chia chuỗi nhị phân thành các khối 6 bit. Base64 chỉ sử dụng 6 bit (tương ứng với 2 ^ 6=64 ký tự) để đảm bảo dữ liệu mã hóa có thể in được và con người có thể đọc được. Không có ký tự đặc biệt nào có sẵn trong ASCII được sử dụng.

64 ký tự (do đó có tên là Base64) gồm 10 chữ số, 26 ký tự viết thường, 26 ký tự viết hoa cũng như dấu cộng (+) và dấu gạch chéo ngược (/). Ngoài ra còn có một ký tự thứ 65 được gọi là dấu đệm, đó là dấu Bằng (=). Ký tự này được sử dụng khi phân đoạn cuối cùng của dữ liệu nhị phân không chứa đầy đủ 6 bit.

Ví dụ về mã hóa Base64

Ví dụ: lấy ba số ASCII 155, 162 và 233. Ba số này tạo thành một luồng nhị phân 100110111010001011101001. Một tệp nhị phân, giống như một hình ảnh, chứa một luồng nhị phân chạy với hàng chục hoặc hàng trăm nghìn số 0 và những cái.

Một bộ mã hóa Base64 bắt đầu bằng cách chia luồng nhị phân thành các nhóm gồm sáu ký tự: 100110 111010 001011 101001. Mỗi nhóm này chuyển thành các số 38, 58, 11 và 41.

Luồng nhị phân sáu ký tự chuyển đổi giữa các ký tự nhị phân (hoặc cơ số 2) sang thập phân (cơ số 10) bằng cách bình phương từng giá trị được biểu thị bằng 1 trong chuỗi nhị phân với bình phương vị trí của nó. Bắt đầu từ bên phải và di chuyển sang trái, và bắt đầu bằng 0, các giá trị trong luồng nhị phân đại diện cho 2 ^ 0, sau đó 2 ^ 1, sau đó 2 ^ 2, sau đó 2 ^ 3, sau đó 2 ^ 4, sau đó 2 ^ 5.

Đây là một cách khác để xem xét nó. Bắt đầu từ bên trái, mỗi vị trí có giá trị 1, 2, 4, 8, 16 và 32. Nếu số nhị phân có 1 trong ô, bạn thêm giá trị đó; nếu nó có một số 0 trong khe, bạn không. Chuỗi nhị phân 100110 chuyển đổi thành số thập phân 38: 02 ^ 01 + 12 ^ 1 + 12 ^ 2 + 02 ^ 3 + 02 ^ 4 + 12 ^ 5=0 + 2 + 4 + 0 + 0 + 32.

Mã hóa Base64 lấy chuỗi nhị phân này và chia nhỏ thành các giá trị 6-bit 38, 58, 11 và 41.

Cuối cùng, những con số này được chuyển đổi thành ký tự ASCII bằng cách sử dụng bảng mã Base64. Các giá trị 6 bit của ví dụ này dịch sang chuỗi ASCII m6Lp.

Sử dụng bảng chuyển đổi Base64:

  • 38 là m
  • 58 là 6
  • 11 là L
  • 41 là p

Quy trình hai bước này được áp dụng cho toàn bộ chuỗi nhị phân được mã hóa.

Để đảm bảo dữ liệu được mã hóa có thể được in đúng cách và không vượt quá giới hạn độ dài dòng của bất kỳ máy chủ thư nào, các ký tự dòng mới được chèn để giữ độ dài dòng dưới 76 ký tự. Các ký tự dòng mới được mã hóa giống như tất cả các dữ liệu khác.

Toàn bộ mục đích của mã hóa Base64, từ việc thêm đệm để bảo toàn các phân đoạn nhị phân 3 byte đến chuyển đổi nhị phân thành văn bản bằng cách sử dụng bảng Base64, là để duy trì tính toàn vẹn của thông tin nhị phân được truyền.

Bảng mã hóa Base64

Bảng sau đây dịch tất cả 64 ký tự được sử dụng trong mã hóa Base64.

Bảng mã hóa Base64
Giá trị Char Giá trị Char Giá trị Char Giá trị Char
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
2 C 18 S 34 tôi 50 y
3 D 19 T 35 j 51 z
4 E 20 Ư 36 k 52 0
5 F 21 V 37 l 53 1
6 G 22 W 38 m 54 2
7 H 23 X 39 55 3
8 Tôi 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 26 a 42 q 58 6
11 L 27 b 43 r 59 7
12 M 28 c 44 s 60 8
13 N 29 d 45 t 61 9
14 Ô 30 e 46 u 62 +
15 P 31 f 47 v 63 /

Giải quyết Trò chơi cuối cùng

Khi kết thúc quá trình mã hóa, có thể có sự cố. Nếu kích thước của dữ liệu gốc tính bằng byte là bội số của ba, mọi thứ hoạt động tốt. Nếu không, có thể có các byte trống. Để mã hóa thích hợp, cần chính xác 3 byte dữ liệu nhị phân.

Giải pháp là nối đủ số byte với giá trị 0 để tạo một nhóm 3 byte. Hai giá trị như vậy được nối thêm nếu dữ liệu cần thêm một byte dữ liệu, một giá trị được nối thêm hai byte.

Tất nhiên, không thể mã hóa các dấu '0 nhân tạo này bằng bảng mã hóa bên dưới. Chúng phải được đại diện bởi một ký tự thứ 65. Ký tự đệm Base64 là dấu Bằng (=) và được đặt ở cuối dữ liệu được mã hóa.

Đề xuất: