问题描述
在 Java 128 位哈希中,其中 32 位(13 位)将是纪元,其余数字(86 位)是一些哈希值
input -> string some random string of n size=
output-> 128bit or 38 digits number
39 digits(128 bits)= epoch +some hashvalue
1475166540000+*************************
有人可以推荐一些哈希函数吗?
解决方法
您遇到的问题是 128 位不是 39 位,而是 4 位。如果您愿意更改散列的长度,您可以这样做(总共 344 位):
String input = "abcdef";
String output = null;
try {
MessageDigest digest = MessageDigest.getInstance("SHA-256");
byte[] hash = digest.digest(input.getBytes(StandardCharsets.UTF_8));
output = System.currentTimeMillis() + new String(hash,StandardCharsets.UTF_8);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
System.out.println(output); // Your new hash