如何解决如何使用Java中的哈希代码制作字符串?
我知道java中的string.hashCode()如何工作:
public int hashCode() {
int h = hash;
if (h == 0 && value.length > 0) {
char val[] = value;
for (int i = 0; i < value.length; i++) {
h = 31 * h + val[i];
}
hash = h;
}
return h;
}
假设我们有一个与“ xyz”相对应的哈希代码,例如“ 119193”。
有什么办法取消哈希并找到真实的字符串?
解决方法
哈希函数仅设计为一种方法。
当您将理论上无限大的输入组(所有可能的字符串)转换为有限数量的整数时,不可避免的是多个不同的String会导致相同的哈希。
也就是说,从理论上讲,您可以测试大量的String,并检查新哈希是否与存储的哈希匹配。但是,您永远不能确保此String与原始输入相同,因为多个String可能导致相同的哈希值。
如果您有有限数量的输入字符串(即来自预定义的池),或者可以缩小测试搜索的范围,即缩小词典中的单词组合,则可以减少测试哈希所需的时间。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。