訊息摘要演算法第五版(Message-Digest Algorithm 5,縮寫為MD5),是當前電腦領域用於確保資訊傳輸完整一致而廣泛使用的雜湊演算法之一(又譯雜湊演算法、摘要演算法等),MD5由MD4、MD3、MD2改進而來,主要增強演算法複雜度和不可逆性。

所謂不可逆就是可以將一組密碼轉為MD5,可以沒辨法從MD5得知原使始密碼,所以很多網站在你忘記密碼的時候是寄一組新的密碼,或者是要你重新申請,那就表示他們密碼是加密過的,他們也不知道你的原始密碼是什麼,換句話說只要是直接寄你原始密碼給你的網站只要被破解了,你的帳密就被看光光啦~

但是同樣的一組密碼單純轉換為MD5的話,同一隻程式不論拿到哪裡轉出來的密碼都會是一樣的,所以為了防止解密通常會加上一組字串後再轉換以加強安全性,當然再加密的方法不一定是加上字串,也可以加上符號、數字甚至是公式,只是要確定同樣的密碼每次轉出來的都一樣就行了。

原始碼:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5 {

	public static void main(String[] args) throws IOException {
		BufferedReader buff = new BufferedReader(new InputStreamReader(System.in));
		System.out.print("Password:");
		String pas = buff.readLine();
		String key = "Change Password to MD5.";
		String md5 = change(pas + key);
		System.out.println("MD5:" + md5);
	}

	public static String change(String input) {
		
		String md5 = null;
		
		if(null == input) return null;
		
		try {
			MessageDigest digest = MessageDigest.getInstance("MD5");
			digest.update(input.getBytes(), 0, input.length());
			md5 = new BigInteger(1, digest.digest()).toString(16);
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		}
		
		return md5;
	}
}

 

arrow
arrow
    全站熱搜

    taurus770423 發表在 痞客邦 留言(0) 人氣()