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

Finding a String with the same hashcode() value as given String

我正在尝试查找与给定字符串具有相同散列结果的字符串。

例如:

如果我有 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) 并找到与 [=15 长度相同的字符串 () =] 具有等效的哈希值?

你需要解这个方程:

(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 使用问题中的函数。