JAVA MD5的誤區

下面這句話引用自百度百科:
MD5還廣泛用於操作系統的登陸認證上,如Unix、各類BSD系統登錄密碼、數字簽名等諸多方面。如在Unix系統中用戶的密碼是以MD5(或其它類似的算法)經Hash運算後存儲在文件系統中。當用戶登錄的時候,系統把用戶輸入的密碼進行MD5 Hash運算,然後再去和保存在文件系統中的MD5值進行比較,進而確定輸入的密碼是否正確。通過這樣的步驟,系統在並不知道用戶密碼的明碼的情況下就可以確定用戶登錄系統的合法性。這可以避免用戶的密碼被具有系統管理員權限的用戶知道。

也就是說,MD5並不是我們通常理解的加密和解密,它並沒有解密這個功能。那它有什麼用呢,從上面我們可以知道每一個明文都對應唯一的一個密文(但我並沒有說一個密文也對應的唯一的一個明文,因爲我也不知道是不是一一映射)。但是密文到明文是不可逆的(不過由於技術的革新,好像現在可逆了)。以下是示例:

import java.security.MessageDigest;  
import java.security.NoSuchAlgorithmException;  
public class CreateMD5 {  
    public static String getMd5(String plainText) {  
        try {  
            MessageDigest md = MessageDigest.getInstance("MD5");  
            md.update(plainText.getBytes());  
            byte b[] = md.digest();  
            return new String(b);   
        } catch (NoSuchAlgorithmException e) {  
            e.printStackTrace();  
            return null;  
        }  
    }  
    public static void main(String[] args) {
        for(int i=0;i<10;i++){
            System.out.println(CreateMD5.getMd5("hello"));  
        }

    }  
}

這裏寫圖片描述

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