SHA
是一種數據加密演算法,該演算法經過加密專家多年來的發展和改進已日益完善,現在已成為公認的最安全的散列演算法之一,並被廣泛使用。
該演算法的思想是接收一段明文,然後以一種不可逆的方式將它轉換成一段(通常更小)密文,也可以簡單的理解為取一串輸入碼(稱為預映射或信息),並把它們轉化為長度較短、位數固定的輸出序列即散列值(也稱為信息摘要或信息認證代碼)的過程。
散列函數值可以說時對明文的一種“指紋”或是“摘要”所以對散列值的數字簽名就可以視為對此明文的數字簽名。
SHA 與 MD5 比較
因為二者均由 MD4 導出,SHA-1 和 MD5 彼此很相似。相應的,他們的強度和其他特性也是相似,但還有以下幾點不同:
對強行攻擊的安全性:最顯著和最重要的區別是 SHA-1 摘要比MD5摘要長32位。使用強行技術,產生任何一個報文使其摘要等於給定報摘要的難度對 MD5 是2^128數量級的操作,而對 SHA-1 則是2^160數量級的操作。這樣,SHA-1 對強行攻擊有更大的強度。
對密碼分析的安全性:由於 MD5 的設計,易受密碼分析的攻擊,SHA-1 顯得不易受這樣的攻擊。
速度:在相同的硬件上,SHA-1 的運行速度比 MD5 慢。
BASE64
按照 RFC2045 的定義,Base64 被定義為:Base64 內容傳送編碼被設計用來把任意序列的8位字節描述為一種不易被人直接識別的形式。(The Base64 Content-Transfer-Encoding is designed to represent arbitrary sequences of octets in a form that need not be humanly readable.)
常見於郵件、http 加密,截取 http信息,你就會發現登錄操作的用戶名、密碼欄位通過 BASE64 加密的。
資源
內有完整 Sample Code
http://jax-work-archive.blogspot.tw/2015/02/java.html
Java如何進行Base64的編碼(Encode)與解碼(Decode)1
https://puremonkey2010.blogspot.tw/2016/03/java-javabase64encodedecode.html