【问题标题】:HMACSHA1 SSL issueHMACSHA1 SSL 问题
【发布时间】:2013-01-22 11:42:26
【问题描述】:

我有以下代码,它从密码创建哈希,然后将其与数据库中存储的哈希密码进行比较。通过 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 登录。

有什么想法吗?

非常感谢

【问题讨论】:

  • SSL 对 asp.net 是透明的,我不明白密码在哪里以及如何从客户端传输到服务器以及在哪里完成比较。
  • 为什么要使用 HMAC,然后将密码作为密钥和要散列的数据传递?这没有任何意义。
  • 罗伯特,不是我的代码,它是开源 cms umbraco 的一部分。只是试图解决我发现的一个问题,似乎在 https 上的编码是不同的,而在 http 上可能在 .net 框架的深处发生了什么?
  • 是否建议查看 http 标头,例如“accept-encoding”?

标签: c# asp.net ssl sha1 hmac


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2010-10-08
    • 2016-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-24
    • 1970-01-01
    • 2011-08-20
    相关资源
    最近更新 更多