Unter .NET gibt es an jedem Objekt die Methode „GetHashCode“ welche einen HashCode zurückliefert. Das Problem an dieser Methode ist jedoch das sie vom Objekt selbst implementiert werden muss. Möchte man nun eine Methode mit der man jedes Objekt generisch hashen kann, so ist diese Funktion hilfreich:
public string GetSHA1HashFromObject(object obj) { SHA1CryptoServiceProvider sha1Provider=new SHA1CryptoServiceProvider(); DataContractSerializer serializer=new DataContractSerializer(obj.GetType()); using(MemoryStream memoryStream=new MemoryStream()) { serializer.WriteObject(memoryStream, obj); sha1Provider.ComputeHash(memoryStream.ToArray()); return Convert.ToBase64String(sha1Provider.Hash); } }
Die Funktion serialisiert dabei das Objekt und hasht anschließend das serialisierte Objekt. Damit ist es egal, welches Objekt in die Funktion gegeben wird.