首页 > 解决方案 > 使用特定散列函数计算给定散列的冲突键

问题描述

给定以下哈希函数(用 java 编写):

long hash(String key) {
    char[] c = key.toCharArray();
    long hash = 7;
    for (int i = 0; i < c.length; i++) {
        hash = hash*31 + c[i];
    }
    return hash;
}

(注意:我会把这个哈希函数的类型放在问题标题中,但找不到它叫什么。如果你知道这个词,请在评论中告诉我)

如何计算一个哈希值与其他键相同的键?

long a = hash("myKey");
String x = reverseHash(a);
assert(hash(x) == a);

有没有办法有效地计算这个?(不求解密算法,只求产生等价哈希的方法)

这样的算法会是什么样子?(不必使用与我的示例完全相同的数字,我只是想理解它)

标签: hash

解决方案


推荐阅读