commons-codec包能夠從apache下載,最新版是1.3java
不可逆算法算法
1.MD5apache
String str = "abc";
DigestUtils.md5Hex(str);安全
附.net生成MD5的方法,生成內容跟java一致:函數
String str = "abc";
FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5");加密
2.SHA1.net
String str = "abc";
DigestUtils.shaHex(str);設計
附.net生成SHA1的方式,生成內容跟java一致:code
String str = "abc";
FormsAuthentication.HashPasswordForStoringInConfigFile(str, "SHA1");orm
可逆算法
常規加密解密算法:BASE64
加密
String str= "abc"; // abc爲要加密的字符串
byte[] b = Base64.encodeBase64(str.getBytes(), true);
System.out.println(new String(b));
解密
String str = "YWJj"; // YWJj爲要解密的字符串
byte[] b = Base64.decodeBase64(str.getBytes());
System.out.println(new String(b));
散列算法
散列是信息的提煉,一般其長度要比信息小得多,且爲一個固定長度。加密性強的散列必定是不可逆的,這就意味着經過散列結果,沒法推出任何部分的原始信息。任何輸入信息的變化,哪怕僅一位,都將致使散列結果的明顯變化,這稱之爲雪崩效應。散列還應該是防衝突的,即找不出具備相同散列結果的兩條信息。具備這些特性的散列結果就能夠用於驗證信息是否被修改。
單向散列函數通常用於產生消息摘要,密鑰加密等,常見的有:
l MD5(Message Digest Algorithm 5):是RSA數據安全公司開發的一種單向散列算法,非可逆,相同的明文產生相同的密文。
l SHA(Secure Hash Algorithm):能夠對任意長度的數據運算生成一個160位的數值;
SHA-1與MD5的比較
由於兩者均由MD4導出,SHA-1和MD5彼此很類似。相應的,他們的強度和其餘特性也是類似,但還有如下幾點不一樣:
l 對強行供給的安全性:最顯著和最重要的區別是SHA-1摘要比MD5摘要長32 位。使用強行技術,產生任何一個報文使其摘要等於給定報摘要的難度對MD5是2128數量級的操做,而對SHA-1則是2160數量級的操做。這樣,SHA-1對強行攻擊有更大的強度。
l 對密碼分析的安全性:因爲MD5的設計,易受密碼分析的攻擊,SHA-1顯得不易受這樣的攻擊。
l 速度:在相同的硬件上,SHA-1的運行速度比MD5慢。