Base64是一種基於64個可列印字元來表示位元據的表示方法。由於2的6次方等於64,所以每6個位元為一個單元,對應某個可列印字元。三個位元組有24個位元,對應於4個Base64單元,即3個位元組需要用4個可列印字元來表示。它可用來作為電子郵件的傳輸編碼。在Base64中的可列印字元包括字母A-Z、a-z、數字0-9
,這樣共有62個字元,此外兩個可列印符號在不同的系統中而不同(本類庫裡面用的是`+`,`/`這兩個字元)。一些如uuencode的其他編碼方法,和之後binhex的版本使用不同的64字元集來代表6個位元字,但是它們不叫Base64。
Base64常用於在通常處理文本資料的場合,表示、傳輸、儲存一些位元據。包括MIME的email,email via MIME, 在XML中儲存複雜資料.[摘自:維基百科]
Base64其實是一種簡單的置換加密方式,但是BASE64的用處往往並不是為了防止資訊泄露,而且為了方便傳輸,進過BASE64編碼後的資訊會比原始資訊長,大概是4/3倍。
昨天本人寫了一個機遇javascript實現的一個Base4編碼和解碼的一個類庫,是:http://code.google.com/p/lazycode/downloads/detail?name=Base64.js&can=2&q=#makechanges。
國內git:http://git.oschina.net/loonhxl/jbase64
本類庫目前基於UTF-8編碼實現的Base64編碼和解碼(支援utf-8能表示的所有字元的base64編碼和解碼,如漢字等),可以和java的BASE64編碼對應。目前測試通過,但是其他編碼的漢字如GBK編碼,未測試,可能會出現無法解碼的現象。
UTF-8是unicode的一種特殊形式,詳細介紹可以參考維基百科:http://zh.wikipedia.org/wiki/UTF8
用法:
引入Base64.jsvar base64 = BASE64.encode(str);//返回編碼後的字元var unicode= BASE64.decoder(base64Str);//返回會解碼後的unicode碼數組。//可由下面的代碼編碼為stringvar str = '';for(var i = 0 , len = unicode.length ; i < len ;++i){ str += String.fromCharCode(unicode[i]);}