为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕的地8271018 2018-10-24 09:10:37
今天做了一个实验.在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 结果令人失望!谁能给个解释啊?
查看完整描述

2 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

不要使用GetHashCode()来做类似字符串加密的事情。而是使用md5或sha1算法来做这件事。

GetHashCode()的算法甚至还会根据Framework的版本更新而变化的。

有这样的故事,曾经有公司使用GetHashCode()来hash password,结果升级了新的.net版本,所有用户再也登录不上了...


查看完整回答
反对 回复 2018-10-25
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

反编译String的GetHashCode看了看,其中需要用到实例的指针地址来计算HashCode,估计和这个有关系。呵呵,问题挺有意思的。

查看完整回答
反对 回复 2018-10-25
  • 2 回答
  • 0 关注
  • 834 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信