2014-04-02 43 views
1

我嘗試使用SHA-256如何使用SHA-256

我使用SHA-256散列字符串使用以下method

哈希我的用戶密碼,這是字符串類型的哈希字符串
String text = "abc"; 
MessageDigest digest = MessageDigest.getInstance("SHA-256"); 
byte[] hash = digest.digest(text.getBytes("UTF-8")); 

向該btye陣列字符串轉換,我使用了下列method

String doc2 = new String(hash, "UTF-8"); 

當我打印DOC2噸o輸出,我得到垃圾

�x����[email protected]�]�"#�a��z���a� 

我在做什麼錯?我如何使用SHA-256散列字符串並將其轉換回字符串?

+0

散列是一種單向函數。如果你的目的是試圖從哈希中取回密碼,那是不可能的。 – anonymous

回答

7

哈希

String s = DatatypeConverter.printHexBinary(hash) 

的這種意志普林十六進制表示你不能從散列原始字符串

1

SHA256返回純二進制輸出,從00到FF本質上同樣有可能對每個角色的所有值。

對於文本輸出,您需要將其轉換爲文本形式,像Base64 encoding

byte[] encodedBytes = Base64.encodeBase64("Test".getBytes()); 
System.out.println("encodedBytes " + new String(encodedBytes)); 

從加密哈希的聲音(或最哈希,甚至密碼不健全的人)去唯一的歸途到原始輸入是在輸入之後將散列應用於輸入,直到獲得相同的結果 - 即原始輸入或碰撞。