我将密码和用户登录一起散列,并将其作为VARBINARY长度保存在数据库中。访问散列密码
现在,我正在尝试在asp.net中构建登录页面。我怎样才能从数据库中获取密码值,并将其与用户提供的密码值进行比较?我使用SqlDataReader来读取数据库。
问候,
巴尔托什
我将密码和用户登录一起散列,并将其作为VARBINARY长度保存在数据库中。访问散列密码
现在,我正在尝试在asp.net中构建登录页面。我怎样才能从数据库中获取密码值,并将其与用户提供的密码值进行比较?我使用SqlDataReader来读取数据库。
问候,
巴尔托什
你创建一个散列(用与创建初始散列相同的算法),在用户输入并在db中搜索密码的情况下(如果散列与初始散列相同) - >是的,它是相同的密码
散列的想法是有一个不可退回的功能 - >你可以检查它是否相同,但你永远不能重建输入数据。
这就是我想要做的。但是,如何将包含我散列密码的阅读器[“密码”]转换为字节[]以进行比较? – Bartosz
您需要将这些文件存储在包含带有用户名的列的表格中,以明文形式显示,以便您可以根据尝试登录的用户获取哈希值。并将散列输入与散列存储的输入进行比较。
我确实有明文保存在数据库中的用户名。其采购散列密码并将其转换为字节[],以供比较,我无法做到。 – Bartosz
作为RB。说,你检索从数据库传递的散列。然后你使用用户提供的密码,并使用之前使用的哈希算法对其进行哈希处理。如果数据库中的散列码与用户输入的密码的散列码相匹配,那么密码是正确的。
这就是我想要做的。但是,如何将包含我散列密码的阅读器[“密码”]转换为字节[]以进行比较? – Bartosz
看看类似的问题。有代码来编写散列字节。 http://stackoverflow.com/questions/2687196/asp-net-membership-c-sharp-how-to-compare-existing-password-hash – tranceporter
有关散列与加密的信息:[散列密码和加密它之间的区别](http://stackoverflow.com/questions/326699/difference-between-hashing-a-password-and-encrypting-it?rq = 1) –
不要忘记添加[salt](http://en.wikipedia.org/wiki/Salt_(cryptography)) –