为什么对于同样的字符串str,str.GetHashCode()结果不同

今天做了一个实验.

在x86的PC上对于一个字符串使用GetHashCode()获取一个字符串的Hash

(在PC上试验了WinForm和Asp.Net,结果是一样的)

在Xscale CPU的WinCE上边对于同样的字符串也使用GetHashCode()获取Hash

(在WinCE设备上和PPC2003、WM5、WM6模拟器的模拟器上结果都相同)

然后比较发现他们俩不一样!这是为什么呢?

 

刚才Google了一下,有说对于同样一个对象X86和X64平台下GetHashCode()的结果是不一样的。

为什么不一样没说。

我想问下为什么不一样呢?难道跟CPU有关?

Google使用关键字GetHashCode CPU 结果令人失望!

谁能给个解释啊?


慕的地8271018
浏览 839回答 2
2回答

梵蒂冈之花

不要使用GetHashCode()来做类似字符串加密的事情。而是使用md5或sha1算法来做这件事。GetHashCode()的算法甚至还会根据Framework的版本更新而变化的。有这样的故事,曾经有公司使用GetHashCode()来hash password,结果升级了新的.net版本,所有用户再也登录不上了...

猛跑小猪

反编译String的GetHashCode看了看,其中需要用到实例的指针地址来计算HashCode,估计和这个有关系。呵呵,问题挺有意思的。
打开App,查看更多内容
随时随地看视频慕课网APP