我工作的公司已经签订了大订单处理系统的支持合同.作为初始系统审核的一部分,我注意到存储在数据库中的密码实际上是密码的哈希码.
实质上:
string pwd = "some pasword"; string securePwd = pwd.GetHashCode();
我的问题是,这有多安全?
我对此感到不舒服,但我对GetHashCode的工作原理还不太了解.我更喜欢使用类似MD5哈希的东西,但如果我浪费时间,那么我就不会打扰了.
您应该使用加密的加密哈希,例如SHA256Managed
.
Jeff Attwood在这个主题上有一些好帖子:
彩虹哈希开裂
您可能错误地存储密码
它不仅不安全,而且还可能发生变化:
http://netrsc.blogspot.com/2008/08/gethashcode-differs-on-systems.html
GetHashValue为给定输入返回的值在过去已更改.
不能保证它在应用程序的不同执行之间甚至是相同的.