我在Java程序中得到了一个String变量,我知道它是通过以下代码生成的:
public static String code(String text) {
final byte[] bytes = text.getBytes();
HashCode hc = Hashing.murmur3_32().hashBytes(bytes, 0, bytes.length);
long tmp = hc.asInt();
StringBuilder sb = new StringBuilder("");
sb.append(Integer.toHexString((int) tmp));
return sb.toString();
}
如何解码此变量以获取原始文本?
答案 0 :(得分:1)
不幸的是,你做不到。散列函数意味着是单向的。此外,会有几个不同的字符串产生相同的散列,因此无法恢复明文。
答案 1 :(得分:0)
不,没有这样的方法。哈希函数是有损的。
当你考虑它时,所有可能字符串的集合远远大于所有可能的整数集合,这使得双向映射成为不可能。
如果可以从其哈希码中恢复字符串,那么就可以将任意数量的数据压缩为单个int,然后能够完美地重构它。