【问题标题】:accessing hashed password访问哈希密码
【发布时间】:2012-09-06 09:38:23
【问题描述】:

我将密码与用户登录名一起散列,并将其作为 VARBINARY 20 字节长保存在数据库中。

现在,我正在尝试在 asp.net 中构建登录页面。如何从数据库中获取密码值以将其与用户提供的密码值进行比较?我使用 SqlDataReader 来读取数据库。

问候,

巴托斯

【问题讨论】:

标签: asp.net hash cryptography sha1 sqldatareader


【解决方案1】:

您需要将这些存储在一个表中,该表包含一个用户名以明文形式显示的列,以便您可以根据尝试登录的用户获取哈希值。并将哈希输入与哈希存储的输入进行比较。

【讨论】:

  • 我确实有用户名以明文形式保存在数据库中。它的采购哈希密码并将其转换为 byte[] 以进行比较我无法做到。
【解决方案2】:

您不会取消哈希数据库密码并将其与输入进行比较。

您对输入进行哈希处理并将其与密码进行比较。如果两个哈希值匹配,则假设它是相同的密码1

1从技术上讲,根据您的哈希函数,它可能不是,因为用户可能随机输入了一个密码,该密码与真实密码的哈希值相同,但这是迂腐的;)

【讨论】:

  • 这就是我想要做的。但是,如何将包含我的哈希密码的 reader["password"] 转换为 byte[] 进行比较?
  • (Byte[])reader["usrPassword"] 我正在寻找。还是谢谢
【解决方案3】:

您在用户输入的密码上创建一个哈希(使用与创建初始哈希相同的算法)并在数据库中搜索哈希是否与初始哈希相同 --> 是的,它是相同的密码

哈希的想法是有一个不可返回的函数 --> 你可以检查它是否相同,但你永远无法重建输入数据。

【讨论】:

  • 这就是我想要做的。但是,如何将包含我的哈希密码的 reader["password"] 转换为 byte[] 进行比较?
【解决方案4】:

作为 RB。说,您检索从数据库传递的散列。然后,您获取用户提供的密码并使用您之前使用的相同哈希算法对其进行哈希处理。如果数据库中的哈希码与用户输入密码的哈希码匹配,则密码正确。

【讨论】:

  • 这就是我想要做的。但是,如何将包含我的哈希密码的 reader["password"] 转换为 byte[] 进行比较?
  • 看看类似的问题。有以字节为单位计算哈希的代码。 stackoverflow.com/questions/2687196/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-07
  • 1970-01-01
  • 2012-05-24
  • 2014-05-06
  • 2023-04-08
  • 2015-11-30
  • 2018-01-31
相关资源
最近更新 更多