Java實現MD5加密

        在各種應用系統中,如果需要設置賬戶,那麼就會涉及到儲存用戶賬戶信息的問題,爲了保證所儲存賬戶信息的安全,通常會採用MD5加密的方式來,進行儲存。

       MD5,全稱爲“Message Digest Algorithm 5”,中文名“消息摘要算法第五版”,它是計算機安全領域廣泛使用的一種散列函數,用以提供消息的完整性保護。嚴格來說,它是一種摘要算法,是確保信息完整性的。不過,在某種意義上來說,也可以算作一種加密算法。

MD5 算法具有很多特點
壓縮性:任意長度的數據,算出的MD5值長度都是固定的。
容易計算:從原數據計算出MD5值很容易。
抗修改性:對原數據進行任何改動,哪怕只修改1個字節,所得到的MD5值都有很大區別。
弱抗碰撞:已知原數據和其MD5值,想找到一個具有相同MD5值的數據(即僞造數據)是非常困難的。
強抗碰撞:想找到兩個不同的數據,使它們具有相同的MD5值,是非常困難的。
 

但實際上MD5不是一種加密算法,只是一種算法,因爲它是一個不可逆的過程,即 MD5 生成消息摘要後是不能通過結果解析得到原來的內容。

MD5在線加密工具:http://tools.jb51.net/password/CreateMD5Password

MD5加密方法之一 java自帶jar工具MessageDigest實現 
java.security.MessageDigest

import java.math.BigInteger;
import java.security.MessageDigest;

public class md52 {
	
public static void main(String []args) {
	 try {
		 String str = "abc";
		 // 生成一個MD5加密計算摘要
		 MessageDigest md = MessageDigest.getInstance("MD5");
		 // 計算md5函數
		 md.update(str.getBytes("utf-8"));
		 // digest()最後確定返回md5 hash值,返回值爲8爲字符串。因爲md5 hash值是16位的hex值,實際上就是8位的字符
		 // BigInteger函數則將8位的字符串轉換成16位hex值,用字符串來表示;得到字符串形式的hash值
		String a = new BigInteger(1, md.digest()).toString(16);
		System.out.println(a);
		 } catch (Exception e) {
		
		 }	
}
	
}


//輸出結果​
//900150983cd24fb0d6963f7d28e17f72

​

MD5加密方法之二 spring自帶的工具DigestUtils實現 
org.springframework.util.DigestUtils

    // spring自帶工具包DigestUtils
    System.out.println(DigestUtils.md5DigestAsHex("1234".getBytes()));

    //輸出結果
    // 81dc9bdb52d04dc20036dbd8313ed055

由於MD5不可逆,所以附加一個加密解密算法


public class convertMD5 {
	public static String convertMD5(String inStr){  	
		char[] a = inStr.toCharArray();  
		for (int i = 0; i < a.length; i++){  
			a[i] = (char) (a[i] ^ 't');  
		}  
		String s = new String(a); 	
		return s;  
	}  
	/** 
     * 加密解密算法 執行一次加密,兩次解密 
     */
	// 測試主函數  
	public static void main(String args[]) {  
		String s = new String("abc");  
		System.out.println("原始:" + s);  
		System.out.println("加密的:" + convertMD5(s));  
		System.out.println("解密的:" + convertMD5(convertMD5(s)));  

	}  
}

//調試結果
//原始:abc
//加密的:???
//解密的:abc

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章