5

我有以下代码,它从密码创建哈希,然后将其与数据库中存储的哈希密码进行比较。通过 http 一切正常。这适用于在 c# 4.0 下运行的 asp.net webforms 应用程序

HMACSHA1 hash = new HMACSHA1();
hash.Key = Encoding.Unicode.GetBytes(password);
encodedPassword = Convert.ToBase64String(hash.ComputeHash(Encoding.Unicode.GetBytes(password)));

但是,在 https/ssl 上运行时,编码密码不同,因此用户无法登录。

.net 框架在通过 SSL 计算哈希时会做不同的事情吗?

如果我单步执行代码并复制编码的密码并更新我的数据库,那么我可以通过 SSL 登录。

有任何想法吗?

非常感谢

4

1 回答 1

1

请尝试按照 MSDN 文章http://msdn.microsoft.com/en-CA/library/39d1w2xf%28v=vs.100%29.aspx中的定义设置全球化设置

这将确保 hash.key 在您的应用程序中是统一的,这反过来又将确保计算的哈希值在每次使用密钥计算时都是相同的。

于 2013-04-26T14:34:40.890 回答