Mã hoá file theo chuẩn Base64

Chun Base64 là chun mã hoá file đ chuyn giao file qua đường email. Vy ti sao chúng ta không bê nguyên xi cái file mà gi qua mail, mã hoá làm chi cho mt ? Vn đ
đây là file gi đi có th
bt kỳ dng nào, khi đó trong file có th cha mi ký t. Trong s các ký t này có c các ký t điu khin. Các ký t điu khin s làm cho mail server hiu nhm là các lnh và thế là x lý lon c lên. Đ tránh điu này, người ta đã đưa ra chun Base64 và máy ch mail s ch x lý theo chun này.

Chun Base64 là mt tp hp gm các ký t (theo đúng th t) : t A đến Z, t a đến z, t 0 đến 9, du +, du /
Tng cng là 64 ký t biu din 64 giá tr t 0 đến 63. Như vy, ký t t A đến Z biu din cho các giá tr t 0 đến 25, t a đến z biu din cho giá tr t 26 đến 51, t 0 đến 9 biu din cho giá tr t 52 đến 61, du + biu din cho giá tr 62, du / biu din cho giá tr 63.

Mt ký t biu din theo mã ASCII s dùng 8 bits. Mt ký t theo Base64 s dùng 6 bits. Như vy, mt file dng Base64 s có kích thước ln hơn khi dng ASCII. C th, s ln gp 4/3 ln (8 bits/6 bits).

Đ chuyn đi file sang dng Base64, ta thc hin theo các bước như sau :
1. Đc ni dung file dưới dng bit.
2. C 6 bits ta tách thành mt nhóm đ x lý.
3. Tra bng mã Base64, mi nhóm 6 bits s có giá tr tương ng vi mt ký t.
4. Ghi ra file các ký t đó.
Vy là xong.

Tui s thc hin các thao tác trên qua mt ví d c th.
Bây gi, chúng ta chuyn 1 file sang dng Base64. Ni dung file cn chuyn dng ASCII như sau :

Anh yeu em

File này tng cng có 10 bytes, k c ký t khong trng.
File này dng bit như sau (tui viết theo tng nhóm 8bits, 3 ký t dng ASCII tương đương 4 ký t dng Base64) :

01000001 : Ký t A
01101110 : Ký t n
01100110 : Ký t h

00100000 : Ký t khong trng
01111001 : Ký t y
01100101 : Ký t e

01110101 : Ký t u
00100000 : Ký t khong trng
01100101 : Ký t e

01101101 : Ký t m

Chúng ta tách nó ra thành tng nhóm 6 bits và tra theo bng mã Base64 s được ký t tương ng (du trong ngoc là giá tr thp phân) :

010000 : (16) : ký t Q
010110 : (22) : ký t W
111001 : (57) : ký t 5
100110 : (38) : ký t m

001000 : (32) : ký t g
000111 : (7) : ký t H
100101 : (37) : ký t l
100101 : (37) : ký t l

011101 : (29) : ký t d
010010 : (18) : ký t S
000001 : (1) : ký t B
100101 : (37) : ký t l

011011 : (27) : ký t b
01 : (1) : ký t B

Vy là ta được file có ni dung như sau :

QW5mgHlldSBlbB

Tng cng có 14 bytes, hơn file ban đu 4 ký t.

Vy là chúng ta đã chuyn đi xong t ASCII sang Base64 ri. Có th send thoi mái !

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: