我有下面的代码,它从密码创建散列,然后将其与数据库中存储的散列密码进行比较。在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我就可以登录了。
有什么想法吗?
非常感谢
发布于 2013-04-26 22:34:41
请尝试按照http://msdn.microsoft.com/en-CA/library/39d1w2xf%28v=vs.100%29.aspx上的MSDN文章中的定义设置全球化设置
这将确保hash.key在整个应用程序中是一致的,这反过来将确保每次使用密钥计算时计算的散列都是相同的。
https://stackoverflow.com/questions/14457741
复制相似问题