2013-08-03 32 views
-4

我已經使用MessageDigest來哈希我的密碼+ salt,現在我想要轉換回來,以便獲得與用戶密碼相比較的原始值。使用DatatypeConverter解碼字節到原始字符串

String _Pass = new String(tfuserpass.getPassword());  
    //=========================================================================================================================================================== 
    MessageDigest md = null; 
    try 
    { 
     md = MessageDigest.getInstance("SHA-512");   
    } 
    catch (NoSuchAlgorithmException e) 
    { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    md.update(_Pass.getBytes()); 
    byte byteData[] = md.digest(); 

    StringBuffer sb = new StringBuffer(); 
    for (int i = 0; i < byteData.length; i++) 
    { 
    sb.append(Integer.toString((byteData[i] & 0xff) + 0x100, 16).substring(1)); 
    } 


Class main() 
{ 

//I have used MessageDigest to hash + salt in this class for password. 
} 

Class main1() 
{ 
//Now I want to decode and compare the values with the actual value to authenticate the user here. 


} 

如何驗證用戶?

+1

你似乎不明白是什麼* *散列是。這是單向的。 –

+0

好的我知道了......但是如何在登錄時進行身份驗證? – anuj

回答

1

一旦你創建了一個消息摘要,你不能解密它,通常的做法是採取新的密碼,應用相同的salt和散列值,並將結果值與原始散列值進行比較。

這樣,你永遠不存儲用戶密碼,如果你遭受過黑客攻擊用戶固定

+1

當然,忽略SHA哈希是當今存儲密碼的錯誤方法。 –

+0

同意了,散列需要被存儲,並且仔細查看數據沒有被正確地散列,因爲我沒有看到一個鹽 –

+0

我再次需要散列+鹽來再次登錄時進行比較? – anuj

相關問題