Tag: hashcode

php和c#中的hmac_sha256不同

这是我的PHP代码: hash_hmac( “sha256”, utf8_encode( $filename ), utf8_encode( $password ) ); 这是我的C#代码: var hmacsha256 = new HMACSHA256( Encoding.UTF8.GetBytes( password ) ); hmacsha256.ComputeHash( Encoding.UTF8.GetBytes( filename ) ); 不幸的是,两个结果都不同 任何人都可以给我一个暗示吗?

GetHashCode扩展方法

在阅读StackOverflow上关于重写GetHashCode()所有问题和答案之后,我编写了以下扩展方法,以便轻松方便地覆盖GetHashCode() : public static class ObjectExtensions { private const int _seedPrimeNumber = 691; private const int _fieldPrimeNumber = 397; public static int GetHashCodeFromFields(this object obj, params object[] fields) { unchecked { //unchecked to prevent throwing overflow exception int hashCode = _seedPrimeNumber; for (int i = 0; i < fields.Length; i++) if (fields[i] != null) hashCode […]

我应该使用字符串字段的串联作为哈希码吗?

我在C#中有一个Address类,如下所示: public class Address { public string StreetAddress { get; set; } public string RuralRoute { get; set; } public string City { get; set; } public string Province { get; set; } public string Country { get; set; } public string PostalCode { get; set; } } 我正在实现相等性,所以我需要覆盖哈希码。 起初我打算使用EJ的哈希码公式,但后来我想:这些都是字符串字段,我不能只使用StringBuilder连接它们并从该字符串返回哈希码吗? 那是: var str = new […]

是否可以将私有成员的哈希码组合起来生成新的哈希码?

我有一个对象,我想生成一个唯一的哈希(覆盖GetHashCode()),但我想避免溢出或不可预测的事情。 代码应该是组合一小组字符串的哈希码的结果。 哈希码将是生成缓存密钥的一部分,因此理想情况下它们应该是唯一的,但是被散列的可能值的数量很小所以我认为概率对我有利。 这样的事情是否足够并且有更好的方法吗? int hash = 0; foreach(string item in collection){ hash += (item.GetHashCode() / collection.Count) } return hash; 编辑:感谢您的答案到目前为止。 @Jon Skeet:不,订单并不重要 我想这几乎是另一个问题,但由于我使用结果生成缓存键(字符串)是否有意义使用像MD5这样的加密哈希函数或只使用此int的字符串表示?

良好的GetHashCode()覆盖了尊重订单的Foo对象列表

EnumerableObject : IEnumerable 包装List 如果EnumerableObject a.SequenceEquals( EnumerableObject b) ,那么它们是相等的。 因此,必须实现GetHashCode 。 问题是XORing列表中的每个元素将返回具有所有且仅相同元素的任何列表的相同哈希码,而不管顺序如何。 就工作而言,这是好的,但会导致许多冲突,这将减慢检索速度等。 对于依赖于顺序的对象列表,什么是好的,快速的GetHashCode方法?