今天做了一个实验.
在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 结果令人失望!
谁能给个解释啊?
不要使用GetHashCode()来做类似字符串加密的事情。而是使用md5或sha1算法来做这件事。
GetHashCode()的算法甚至还会根据Framework的版本更新而变化的。
有这样的故事,曾经有公司使用GetHashCode()来hash password,结果升级了新的.net版本,所有用户再也登录不上了...
反编译String的GetHashCode看了看,其中需要用到实例的指针地址来计算HashCode,估计和这个有关系。呵呵,问题挺有意思的。