【发布时间】:2014-09-03 16:51:42
【问题描述】:
我是 Java 安全的新手,所以对你们来说可能听起来很愚蠢。我使用三重des算法进行加密解密,因为我使用哈希值作为密钥。我正在使用 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() on array 没有你期望的效果。
-
可以使用第三方库吗?如果您可以使用 Guava 的
Hashing.sha512().hashString(text, Charsets.UTF_16).toString(),这将更简单,这将完全实现您想要的。