首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法将哈希密码和salt密码与数据库值匹配

无法将哈希密码和salt密码与数据库值匹配
EN

Stack Overflow用户
提问于 2012-07-11 13:47:44
回答 2查看 358关注 0票数 0

我正在处理一个应用程序,在这个应用程序中,员工将首先通过输入loginID和密码注册到系统中。密码被散列和盐析,并存储在登录表中(这两个值都与loginID值一起存储)。但是,当我通过代码逐步登录到应用程序(注册过程之后)时,哈希值和salt值永远不匹配。

当用户登录到系统时,我将如何验证用户的密码?

加密功能:

代码语言:javascript
运行
复制
protected static void EncryptPassword(eWebEmployee oEmp)
{
    // Create Hash & Salt
    sysSecurity oSecurity = new sysSecurity();
    oEmp.EmpPasswordSalt = oSecurity.CreateSalt(5);
    oEmp.EmpPasswordHash = oSecurity.CreatePasswordHash(oEmp.EmpPasswordSalt, oEmp.EmpPassword);        
}  

数据库调用:

代码语言:javascript
运行
复制
oDbConn.Open();
DbDataReader oDbDataReader = oDbCommand.ExecuteReader();
while (oDbDataReader.Read())
{
    if (!oDbDataReader.IsDBNull(0) && !oDbDataReader.IsDBNull(1))
    {
        if (oEmp.EmpPasswordSalt == oDbDataReader.GetString(1)
            && oEmp.EmpPasswordHash == oDbDataReader.GetString(0))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    else
    {
        return false;
    }
}
oDbConnection.Close();
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-11 13:58:05

我读你的代码的方式你每次都会创建一个新的盐。您应该从数据库中获取salt,使用用户提供的密码计算哈希,而不是将哈希与存储在数据库中的哈希进行比较。如果它们相等,则用户输入正确的密码。只在注册时创建新的salt。

票数 2
EN

Stack Overflow用户

发布于 2012-07-11 13:59:50

理解代码的目的有点困难,但通常使用盐值和密码字符串创建哈希。再次登录时,使用相同的盐值执行完全相同的操作。然后将密码哈希与数据库中的密码哈希进行比较。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11434100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档