Recent Posts

Base64 là gì? Mã hoá file theo chuẩn Base64.

-

Base64 là gì?

Base64 là một chương trình mã hóa chuỗi ký tự bằng cách dùng thay thế các ký tự trong bảng mã ASCII 8 bit thông dụng thành bảng mã 6 bit. Nó thường được sử dụng để mã hóa các tập tin đa phương tiện (hình ảnh, âm thanh, video,…). Ký tự 64 trong Base64 là đại diện cho 64 ký tự trong bãng mã ASCII. Base64 thường được sử dụng trong việc truyền tải email. Tuy nhiên, ngày nay người ta đã sử dụng nó vào việc truyền tải hình ảnh trên website.

Mã hoá file theo chuẩn Base64.

Chuẩn Base64 là một tập hợp gồm các ký tự (theo đúng thứ tự) : từ A đến Z, từ a đến z, từ 0 đến 9, dấu +, dấu /
Tổng cộng là 64 ký tự biểu diễn 64 giá trị từ 0 đến 63. Như vậy, ký tự từ A đến Z biểu diễn cho các giá trị từ 0 đến 25, từ a đến z biểu diễn cho giá trị từ 26 đến 51, từ 0 đến 9 biểu diễn cho giá trị từ 52 đến 61, dấu + biểu diễn cho giá trị 62, dấu / biểu diễn cho giá trị 63.

Một ký tự biểu diễn theo mã ASCII sẽ dùng 8 bits. Một ký tự theo Base64 sẽ dùng 6 bits. Như vậy, một file ở dạng Base64 sẽ có kích thước lớn hơn khi ở dạng ASCII. Cụ thể, sẽ lớn gấp 4/3 lần (8 bits/6 bits).

Để chuyển đổi file sang dạng Base64, ta thực hiện theo các bước như sau :
1. Đọc nội dung file dưới dạng bit.
2. Cứ 6 bits ta tách thành một nhóm để xử lý.
3. Tra bảng mã Base64, mỗi nhóm 6 bits sẽ có giá trị tương ứng với một ký tự.
4. Ghi ra file các ký tự đó.
Vậy là xong.

Ta sẽ thực hiện các thao tác trên qua một ví dụ cụ thể.

Chuyển từ Man sang mã base64 sẽ là TWFu

Trong ví dụ trên, ASCII, các kí tự M, a, n sẽ là 77, 97, và 110 với 8-bit nhị phân là 01001101, 01100001, và 01101110. Có 3 giá trị được nối lại với nhau thành một chuổi 24bit cụ thể là 010011010110000101101110. Một nhóm 6bit có tối đa 2^6 = 64 các giá trị nhị phân khác nhau sẽ được tính từ trái sang phải. (trong trường hợp này 24bit ta sẽ chia thành 4 nhóm từ trái sang phải
010011 010110 000101 101110 sau đó tra bảng mã base64 sẽ được giá trị base64 tương ứng).

Text contentMan
ASCII77 (0x4d)97 (0x61)110 (0x6e)
Bit pattern010011010110000101101110
Index1922546
Base64-encodedTWFu


Bảng mã base64:

ValueCharValueCharValueCharValueChar
0A16Q32g48w
1B17R33h49x
2C18S34i50y
3D19T35j51z
4E20U36k520
5F21V37l531
6G22W38m542
7H23X39n553
8I24Y40o564
9J25Z41p575
10K26a42q586
11L27b43r597
12M28c44s608
13N29d45t619
14O30e46u62+
15P31f47v63/

Khi số bytes không chia hết cho 3 điều đó có nghĩa là thiếu 1 hay 2 bytes thì ta thêm phần bytes phụ với giá trị bằng 0 và thực hiện chuyển đổi.

Related Post:

  • Bắt đầu học lập trình Java cần những gì? 1- Giới thiệu về lập trình Java Java (đọc như "Gia-va") là một ngôn ngữ lập trình hướng đối tượng (OOP) và dựa trên các lớp (class). Khác với phần lớn ngôn ngữ lập trình thông thường, thay vì biên dịch mã nguồn thành mã máy hoặc thông dịch mã nguồn khi chạy, Java được thiết kế để biên dịch mã nguồn thành bytecode, bytecode sau đó sẽ được môi trường thực thi (runtime … Read More
  • Đội tuyển Java (Việt Nam) xếp hạng 20 Lập trình sinh viên quốc tế toàn cầu Đội tuyển Java (ĐHQGHN, đại diện duy nhất của Việt Nam) tham gia Kì thi Lập trình sinh viên quốc tế đã mang về thành tích cao nhất từ trước tới nay cho Việt Nam. Ngày 26/5, thông tin từ Đại học Quốc gia Hà Nội cho biết, đội tuyển lập trình Java, học lập trình Đà Nẵng, Đại học Quốc gia Hà Nội đại diện duy nhất của Việt Nam tham gia Kì thi Lập trình sinh viên quốc tế t… Read More
  • Oracle cáo buộc Google phá hủy thị trường Java Java kiện chống lại Android và cáo buộc Google đã phá hủy thị trường Java. java đối đầu android  Tháng trước, Oracle đã yêu cầu mở rộng vụ kiện chống lại Android và vào hôm thứ Tư vừa qua, Oracle đã nộp bổ sung hồ sơ lên tòa án để kiện cả sáu phiên bản mới của Android so với thời điểm khởi đầu vụ kiện vào năm 2010 .Oracle cáo buộc cũng như các phiên bản trước… Read More
  • Học lập trình java cơ bản tại Đà Nẵng Bạn đừng nên nhầm lẫn ngôn ngữ lập trình Java với JavaScript, nó là ngôn ngữ được tạo ra để “viết một lần, chạy mọi nơi” - nói theo lối kỹ thuật nghĩa là nó có thể chạy tốt trên bất kỳ thiết bị nào hiện có. Học lập trình Java cơ bản tại Đà Nẵng Ngôn ngữ lập trình Java là gì? Chúng ta tương tác với Java trong các hoạt động hàng ngày, dù có nhận ra thực tế đó ha… Read More
  • Ngôn ngữ lập trình mở Java 9 sẽ ra mắt trong năm 2016 Hai nền tảng ngôn ngữ lập trình mở Java 7 và Java 8 đã được ra mắt, dự kiến, Java 9 sẽ được giới thiệu trong năm 2016. Tập đoàn Oracle và cộng đồng học lập trình Java đang tập trung đem lại những cải tiến cho nền tảng Java 9. Trong đó, Project Jigsaw được coi là mũi nhọn của lần ra mắt này. java 9 Với mục đích điều chỉnh nền tảng phần mềm, tăng khả năng tương thí… Read More
  • Các toán tử cơ bản trong lập trình Java Java cung cấp các dạng toán tử sau: •     Toán tử số học •     Toán tử bit •     Toán tử quan hệ •     Toán tử logic •     Toán tử điều kiện •     Toán tử gán 1. Toán tử số học trong lập trình java Các toán … Read More




Klik untuk melihat kode: :) =( :s :D :-D ^:D ^o^ 7:( :Q :p T_T @@, :-a :W *fck* x@