Nhị phân và base64 có giống nhau không?

Mã hóa Base64 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ô sang các hệ thống dựa trên văn bản

Do 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 dưới dạng nhiều 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 tới phương tiện truyền tải bị các hệ thống đó diễn giải sai và bị mất hoặc hỏng trong quá trình truyền.

Hình ảnh Wutthichai Luemuang / EyeEm / Getty

Một phương pháp mã hóa loại dữ liệu nhị phân này theo cách tránh các sự cố truyền 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 mã hóa Base64

Logic mã hóa Base64

Mã hóa Base64 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 theo tiêu chuẩn ASCII. Nó thực hiện điều đó trong hai bước cơ bản

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 được 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 Base64] là 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 lên [/]. Ngoài ra còn có một ký tự thứ 65 được gọi là bàn phím, đó là dấu Bằng [=]. Ký tự này được sử dụng khi đoạn dữ liệu nhị phân cuối cùng không chứa đủ 6 bit

Ví dụ 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 dò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 cho hàng chục hoặc hàng trăm nghìn số 0 và số 1

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 số 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, rồi 2^1, rồi 2^2, rồi 2^3, rồi 2^4, rồi 2^5

Đây là một cách khác để nhìn vào 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 vị trí, bạn thêm giá trị đó; . Chuỗi nhị phân 100110 chuyển thành số thập phân 38. 0*2^01 + 1*2^1 + 1*2^2 + 0*2^3 + 0*2^4 + 1*2^5 = 0+2+4+0+0+32

Mã hóa Base64 lấy chuỗi nhị phân này và chia nhỏ nó 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 thành ký tự ASCII bằ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ữ cho độ 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 phần đệ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 bảng Base64, là để bảo toàn 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

Base64 Encoding TableValueChar ValueChar ValueChar ValueChar0A 16Q 32g 48w1B 17R 33h 49x2C 18S 34i 50y3D 19T 35j 51z4E 20U 36k 5205F 21V 37l 5316G 22W 38m 5427H 23X 39n 5538I 24Y 40o 5649J 25Z 41p 57510K 26a 42q 58611L 27b 43r 59712M 28c 44s 60813N 29d 45t 61914O 30e 46u

Giải quyết kết thúc

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, thì mọi thứ đều hoạt động tốt. Nếu không, có thể có byte trống. Để mã hóa phù hợp, cần có chính xác 3 byte dữ liệu nhị phân

Giải pháp là nối đủ byte với giá trị 0 để tạo 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 cách sử dụng bảng mã hóa bên dưới. Họ 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

Tại sao sử dụng Base64 thay vì nhị phân?

Các lược đồ mã hóa Base64 thường được sử dụng khi có nhu cầu mã hóa dữ liệu nhị phân cần được lưu trữ và truyền qua phương tiện được thiết kế để xử lý dữ liệu văn bản. Điều này để đảm bảo rằng dữ liệu vẫn nguyên vẹn mà không bị sửa đổi trong quá trình vận chuyển .

Base64 có thể mã hóa nhị phân không?

Base64 được sử dụng để mã hóa tệp nhị phân chẳng hạn như hình ảnh trong tập lệnh, để tránh phụ thuộc vào tệp bên ngoài.

Base64 có lớn hơn nhị phân không?

mã hóa base64 làm cho kích thước tệp lớn hơn khoảng 33% so với biểu diễn nhị phân ban đầu của chúng, điều đó có nghĩa là có nhiều dữ liệu hơn [điều này có thể đặc biệt khó khăn trên mạng di động]

Base64 và blob có giống nhau không?

BLOB và mã hóa Base64 . BLOBs are treated in the same manner as strings because they have already been encoded by using base64 encoding before storage into a dictionary file.

Chủ Đề