hash - 使用特定散列函数计算给定散列的冲突键
问题描述
给定以下哈希函数(用 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);
有没有办法有效地计算这个?(不求解密算法,只求产生等价哈希的方法)
这样的算法会是什么样子?(不必使用与我的示例完全相同的数字,我只是想理解它)
解决方案
推荐阅读
- c# - 如何修复 MetroMessageBox 标题大小显示问题
- android - 将数组列表作为参数传递并将其显示为列表
- python - 将列表的定义从迭代转换为理解
- powershell - 将结果传递给 PowerShell 中的类似过滤器
- html - 下拉菜单不查看其项目
- python - Matplotlib - 将线性回归线扩展到图形的整个宽度
- jquery - $ajax 请求给我一个 net::ERR_ABORTED 404
- python - numpy.fromFile 从 txt 文件中读取
- ruby-on-rails - 使用 Rails 5 的 Attributes API 进行本地化输入的自定义十进制类型
- reactjs - React Material UI onFocusOut