Так как вопрос был о создании URL, я полагаю, вам всегда нужен тот же хешированный 64-битный int. GetHashCode не является надежным в этом смысле. Чтобы создать хеш с несколькими коллизиями, я использую этот.
public static ulong GetUInt64Hash(HashAlgorithm hasher, string text)
{
using (hasher)
{
var bytes = hasher.ComputeHash(Encoding.Default.GetBytes(text));
return Enumerable.Range(0, bytes.Length / 8) //8 bytes in an 64 bit interger
.Select(i => BitConverter.ToUInt64(bytes, i * 8))
.Aggregate((x, y) => x ^ y);
}
}
Чтобы использовать его, просто передайте любой хеш-алгоритм, который вы предпочитаете
ulong result = GetUInt64Hash(SHA256.Create(), "foodiloodiloo")
или
ulong result = GetUInt64Hash(MD5.Create(), "foodiloodiloo")
Разница между этим и принятым ответом заключается в том, что в этом XOR все биты, и вы можете использовать любой алгоритм, который захотите