我是java安全新手,所以對你們來說聽起來很愚蠢。我正在使用三重DES算法進行加密解密,因爲我使用散列值作爲鍵。我正在使用SHA-512進行散列,我聽說兩個相同的字符串哈希將相同,但我得到不同的輸出相同的字符串。我附上sha-512的代碼。如果可能,讓我知道問題是什麼。sha-512爲相同的字符串返回不同的值
public class SHA256Algo {
public static String createHash(String text) throws UnsupportedEncodingException, NoSuchAlgorithmException
{
String encryptedText = "" ;
MessageDigest md = MessageDigest.getInstance("SHA-512");
md.update(text.getBytes("UTF-16")); // Change this to "UTF-16" if needed
byte[] digest = md.digest();
String str = digest.toString() ;
return str ;
}
public static void main(String[] args) {
try {
System.out.println(createHash("tarun")) ;
System.out.println(createHash("tarun")) ;
} catch (UnsupportedEncodingException | NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
輸出:
[B @ 32d2bb53
[B @ 29086036
toString()數組沒有你期望的效果。 – Arkadiy 2014-09-03 16:53:38
你可以使用第三方庫嗎?如果你可以使用Guava的'Hashing.sha512()。hashString(text,Charsets.UTF_16).toString()',這將會簡單得多,它將完全實現你想要的。 – 2014-09-03 17:28:21