我想进行一些测试,需要一些具有相同哈希码但不同字符串的字符串。我找不到任何例子,所以决定写一个简单的程序来为我完成。
以下代码会一遍又一遍地生成两个随机字符串,直到它们生成相同的哈希码。
static Random r = new Random();
static void Main(string[] args)
{
string str1, str2;
do
{
str1 = GenerateString();
str2 = GenerateString();
} while (str1.GetHashCode() != str2.GetHashCode() && str1 != str2);
Console.WriteLine("{0}\n{1}", str1, str2);
}
static string GenerateString()
{
string s = "";
while (s.Length < 6)
{
s += (char)r.Next(char.MaxValue);
}
return s;
}
这段代码理论上似乎可以工作,但可能需要几个世纪才能完成。因此,我想反其道而行之,从一个哈希码生成两个字符串。
我知道不可能从哈希码中检索出一个字符串,但是否可能从中生成可能的字符串?
我正在使用Visual Studio 2015 Community Edition。 版本:14.0.23107.0D14REL。
.NET Framework: 4.6.00081。
GetHashCode
方法,使其返回一个固定值的糟糕实现,从而在任何地方都产生冲突。 - Alejandrohash(x) = x%INT_MAX
,你需要迭代超过INT_MAX
个值才能找到碰撞)_。 - BlueRaja - Danny Pflughoeft