Mã hóa base64 là gì?

Base64
là phương thức convert dạng mã hóa
2D 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 .
Sự ra đời của
base64
bắt nguồn từ việc
muốn gửi một ảnh quả
Mail sử dụng chuẩn SMPT,
nhưng mà chuẩn SMTP chỉ cho phép chuyển các ký tự ASCII
sử dụng 7 bit có giá trị từ 0- 127.
Nhưng mà một
tệp nhị phân
gồm có các byte có giá trị 0-255 vậy
đầu tiên chúng ta cần convert nó để có thể
dùng được SMTP.
Cụ thể mã ASCII có 128 giá trị
nhưng tại sao lại là
base64
mà không phải
base128
,
nôm na là vì không phải 128 mã ASCII đều
có thể được sử dụng.
VD CR/LF tương ứng là 13
và 10 trong mã ASCII được
sử dụng để biểu thị việc kết thúc dòng trong SMTP cho nên việc
sử dụng cặp ký tự này là không
thiết yếu và còn nhiều cặp tương tự như vậy nên thay vì
sử dụng 128 (7bits) chúng ta sẽ
sử dụng 64 (6 bits) để thể hiện dữ liệu.
Mã hoá tệp tin 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ẽ sử dụng 8 bits. Một ký tự theo Base64 sẽ sử dụng 6 bits. Như vậy, một tệp tin ở dạng Base64 sẽ có kích thước lớn hơn khi ở dạng ASCII. nhất định, sẽ lớn gấp 4/3 lần (8 bits/6 bits).
Để chuyển đổi tệp sang dạng Base64, ta làm theo các bước như sau :
- 1. Đọc nội dung tệp tin 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ự đấy.
Vậy là xong.
Ta sẽ thực hiện các
thao tác trên qua một
Ví dụ nhất định.
Chuyển từ
Man sang mã base64 sẽ là TWFu
Trong
VD trên, Mã ASCII, các kí tự M, a, n sẽ là 77, 97,
và 110 với 8-bit nhị phân là
01001101,
01100001,
& 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ông giống nhau sẽ được tính từ trái
sang phải.
Bảng mã base64:
 |
Base 64 table codes |
Khi số bytes không chia hết cho 3 điều
đấy 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.
Cách mã hoá theo chuẩn Base64
Để mã hoá
file dạng Base64, chúng ta cần phải thực hiện 3 bước chính:
- Bước 1: Đọc nội dung file dưới dạng nhị phân.
- Bước 2: Tách dãy nhị phân thành các nhóm 6 bits.
- Bước 3: Đổi mỗi nhóm nhị phân 6 bits thành một vài thập phân (decimal).
- Bước 4: Chuyển mỗi nhóm 6 bits thành một ký tự dựa trên bảng mã Base64.
Ví dụ: Chuyển tệp có nội dung văn bản SUN
sang Base64
- B1: Dựa theo bảng ASCII,
SUN
sẽ được đọc dưới dạng nhị phân như sau 01010011
01010101
01001110
- B2: Tách thành nhóm 6 bits
010100
110101
010101
001110
Trong trường hợp nhóm cuối không đủ 6 bits ta thêm các số 0 vào sau sao cho đủ 6 bits.
- B3: Dạng thập phân của mỗi nhóm 6 bits
20
53
21
14
- B4: Dựa theo bảng mã Base64 dưới đây ta được chuỗi
U1VO

Ta có bảng
tóm gọn sau đây

Như vậy dạng Base64 của
SUN
là
U1VO
. Nếu Decode thì chúng ta sẽ làm
ngược lại.
Lời kết
Trên
đây là các bước
cơ bản về mã hoá
file bằng Base64. Như các
bạn có thể thấy,
đây là một
quá trình rất
dễ dàng và trên Internet cũng có
rất là nhiều công cụ giúp
bạn có thể encode
và decode Base64
một cách nhanh chóng.
Cám ơn các bạn đã đọc
& chúc các bạn học tập tốt!
base64 endcode, base64 decode, mã hóa base64; giải mã code base64, encoder, decoder