Just to get this out of the way, you know that GetHashCode() doesn't generate anything unique, right? Two completely different strings can return the same hash code. The algorithm is only intended for creating even distribution of objects in hashtable.
From the horse's mouth:
The default implementation of the GetHashCode method does not guarantee unique return values for different objects.
Additionally, the rules for what happens when you call GetHashCode() can and will change over time. See the section titled "Rule: Consumers of GetHashCode cannot rely upon it being stable over time or across appdomains" here, specifically:
This has bitten people in the past. The documentation for System.String.GetHashCode notes specifically that two identical strings can have different hash codes in different versions of the CLR, and in fact they do. Don't store string hashes in databases and expect them to be the same forever, because they won't be.
To see someone's collision detection work check this out.