天天看點

base64算法的加解密處理

base64分兩個:一個是base64針對郵件傳輸的算法。另外一個就是為了在浏覽器中傳送加密資料或者隐藏表單中用的加密資料,防止大家直接用肉眼從頁面中看到資料内容而采用的url base64。其實隻要是我們想讓加密資料可逆,或者想将資料不讓别人用肉眼就分辨出來,就可以用base64的算法。一些機構給客戶的簽名值都使用base64加密後提供.

  關于urlbase64算法,目前沒定義,不過我們可以參考rfc 4648的規範要求

 詳細介紹參見:http://baike.baidu.com/view/469071.htm

 base64算法是一個違反加密原則的加密算法。

 加密原則:公布算法,但是不公布密鑰

 但是base64是即公布算法又公布了轉換的密鑰。不過我們可以通過改進base64算法來提升base64的實用性。

 關于實作:

 jdk6有sun公司内部使用base64算法的實作,這裡不推薦使用,因為用他們内部的實作,編譯提示錯誤。說不定哪天丢失

 這裡推薦使用bouncy castle的實作或者apache的commons codec的實作。

 (1)、bouncy castle的實作跟rfc的标準略有出入

 (2)、commons codec的實作緊密追随rfc2045的文檔

 舉例嘗試bouncy castle的加解密算法:

1、base64的算法實作

對比後我們可以發現一個問題,就是urlbase64算法就是将浏覽器中不允許出現的+=号給替換成-.這些符号