2011年6月21日 星期二

base64

什麼是base64 <-我一直很疑惑
今天上網查了一下
有以下幾點

1.是一種編碼方式. 將輸入的字串或位元, 以3個bytes換成4個6bits方式編碼.
編譯成純文字的碼. 會叫base64, 是因為編碼結果只會有a-z, A-Z, 0-9外加兩個字元.
編譯出的每一個代碼, 只會在這64個字元裡面,  故名base64.(以上是我猜的...)
編碼詳情可以上google或維基百科查詢.
例如:I am a good man.
以base64編碼方式加以編碼後的結果:SSBhbSBhIGdvb2QgbWFuLg==
2.因為是一種編碼方式, 所以多少有加密的功能. 可是這種加密不安全, 只能防君子. 因為不是很安全地加密, 所以編碼速度很快.
3.為什麼會有base64的出生?..........是因為有些網路傳輸協定, 只允許以ASCII當做內文, 來傳遞資料. 如果你有個檔案, 比如說美女照片, 想要用電子郵件寄給別人, 那就是走SMTP協定, 此協定只能用ASCII來傳遞, 所以必須先將該照片的位元組, 例如010101010100101010101....編碼成純文字, 變成:AAaGBdGHE130.....這是舉例. 才能用SMTP傳出去.
4.網路上有提供base64編碼與解碼的網站
5.那麼HTTP也是純文字傳遞嗎? 我以前都認為是, 可後來看到這篇文章, 才知道原來HTTP也可直接傳位元組哩~所以在http上傳檔, 不一定非得先將二進位檔進行base64編碼才行. 但如果情況是, 你利用http傳給別人一份xml文件, 且想要在該份xml文件中, "夾帶"檔案, 就非得先將檔案以base64編碼後, 再將編碼後的結果, 貼到xml文件裡. 比如以下xml文件:
<傳送資料>
    <檔案內容>
    PGgxPrS/pHCzvaxPpGqr0630sNUhPC9oMT4=
    </檔案內容>
</傳送資料>

6.經過base64編碼後, 輸出的東西會比輸入的東西大上35%, 約莫三分之一左右. 這也是為什麼, 你要記東西給別人, 上傳6MB但上傳完卻顯示為8MB. 會稍微大一點.

總結:base64是一種編碼方式, 可以將二進位或文字資料, 轉變成文字的資料.(你或許會疑惑, 將文字資料轉成文字資料? 沒有錯, 看看維基百科的例子, Man編碼後, 會變成TWFu. 他本來就是文字, 本來就可以用SMTP等協定傳輸, 編碼後只是變成另一個文字. 答:可以做點不是很安全的加密功能囉, 例如這個網站舉例你要傳情書的話...起碼被情敵攔截會看不懂..). base64的編碼原理不複雜, 所以編碼速度快, 安全性低. base64的誕生是為了在純文字協定(如SMTP)下, 仍能傳輸檔案(如一個美女照片, 就說是Hebe好了, 如何?)

沒有留言:

張貼留言