我正在编写一个代码,它将找到冲突std::hash<std::string>并尝试反转一些哈希计算步骤。
在实现中有这样的乘法std::hash。
size_t hash2 = shift_mix(hash1) * mul;
我知道hash2- 从上一步开始,我也知道mul- 它是常数值 = 0xc6a4a7935bd1e995UL。
shift_mix(hash1) * mul导致溢出(hash2 / mul = 0),所以它只需要最后 64 位的乘法结果。
所以,我需要一种方法来找到shift_mix(hash1)满足相等性的许多变体。最好的方法是什么?可能以某种方式使用__int128_t?