0

我在 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();
}

如何解码此变量以获取原始文本?

4

2 回答 2

1

不幸的是,你不能。散列函数是单向的。此外,会有几个不同的字符串产生相同的哈希,因此不可能恢复明文。

于 2013-05-22T08:38:16.007 回答
0

不,没有这样的方法。哈希函数是有损的。

仔细想想,所有可能字符串的集合远大于所有可能整数的集合,因此不可能进行双向映射。

如果可以从其哈希码中恢复字符串,那将能够将任意数量的数据压缩到单个 int 中,然后能够完美地重建它。

于 2013-05-22T08:44:00.300 回答