查找与给定字符串具有相同hashcode()值的字符串



我试图找到一个字符串,共享相同的哈希结果作为一个给定的字符串。

例如:

如果我有String 'den'并使用Java的hashcode()方法哈希结果=99,341

String s = "den";
System.out.println(s.hashCode());
Result = 99,341

知道hashcode()方法计算

s[0]*31^(n-1) + s[1]*31^(n-2) +…+ 2 (n - 1)

我该如何处理这个结果(99,341))并查找相同长度的字符串())作为'den'与相同的哈希值?

你需要解这个方程:

(x * 31^(3-1)) + (y * 31^(3-2)) + (z * 31^(3-3)) = 99341

它是一个平面,只要x,y,z是0到255之间的整数,平面上的每个点都是对你有好处的(如果你只谈论ASCII)

一个可能的解决方案是x=100, y=101, z=110。仅仅到找到另一个,你可以改变其中两个的顺序,看看第三个是什么,例如:

x=101
y=???
z=110
(101 * 31^(3-1)) + (y * 31^(3-2)) + (110 * 31^(3-3)) = 99341

其中y=70(F)因此eFn应该使用您问题中的函数具有与den相同的hashCode

最新更新