PDA

View Full Version : Cần giúp đỡ Mã hoá Base 64 ?



Tiếnsĩđiên
25-09-2004, 04:45
Bạn nào rành về mã hoá Base 64 giúp mình với.
Mình đang cần gấp thuật toán này ?????

Nếu được có thể cho mình ví dụ chi tiết nhé.
Cám ơn nhiều.

DoQuocDuy
08-10-2004, 19:43
Bạn nào rành về mã hoá Base 64 giúp mình với.
Mình đang cần gấp thuật toán này ?????

Nếu được có thể cho mình ví dụ chi tiết nhé.
Cám ơn nhiều.
ban xem o đay : http://www.codeguru.com/Cpp/Cpp/algorithms/article.php/c5099/
(source code duoc viet bang c++)

hmcpp
09-10-2004, 00:59
Mã hóa Base64 dùng tập con (subset) 65-ký tự của bảng mả US-ASCII, cho phép 6 bit cho mỗi ký tự. Ví dụ: ký tự ‘m’ có trị Base64 là 38. Cuối bài này sẽ có một bảng ký tự Base64, chứa tất cả các ký tự và trị Base64 tuơng ứng.



Bây giờ chúng ta sẽ xem cách mã hóa một đoạn text thành mã Base64. Giả sử đoạn text này là: ‘Mai’. Đầu tiên chúng ta chuyển đoạn text này thành trị thập phân.



Ký tự "M" có trị thập phân là 77 (vị trí trong bảng mã US-ASCII)

Ký tự "a" có trị thập phân là 97

Ký tự "i" có trị thập phân là 105



Nghĩa là chuỗi "Mai" (chuỗi ký tự 3 byte, mỗi byte 8 bit) ở dạng thập phân là 77 97 105. Khi chuyển thành dạng nhị phân sẽ có dạng như sau:



01001101 01100001 01101001



Ba byte 8-bit này khi nối liên tục sẽ tạo thành chuỗi 24-bit:



010011010110000101101001



Chuỗi 24-bit này có thể chia thành bốn phần 6-bit (nếu chia không đủ cho 6-bit tì thêm các bit 0 vào bên trái):



010011 010110 000101 101001



Chúng ta có 4 trị. Các trị nhị phân này khi chuyển thành dạng thập phân sẽ có dạng như sau:



19 22 05 41



Mỗi ký tự Base64 tương ứng với một trị thập phân. Chúng ta chuyển các trị thập phân trên thành ký tự Base64 tương ứng.



19 = T

22 = W

05 = F

41 = p

Việc gán các giá trị này bằng bao nhiêu tùy ý.

Vậy "Mai" mã hóa Base64 sẽ thành "TWFp".

Khi giải mã một chuỗi Base64 phải làm ngược lại như sau:

1) Chuyển các ký tự Base64 thành trị thập phân tương ứng.

2) Chuyển các trị thập phân thành nhị phân.

3) Nối liên tục các chuỗi 6-bit này thành một chuỗi nhị phân lớn.

4) Chia chuỗi trên thành các nhóm 8-bit (bắt đầu từ phải sang trái).

5) Chuyển mỗi trị nhị phân 8-bit thành một số thập phân.

6) Chuyển các số thập phân này thành các ký tự US-ASCII tương ứng

mo dung phuc
13-10-2004, 17:58
cai nay thi ban nen xem o trong RFC ve MIME cho chac an
no co nhieu cai lien quan lam ban a`