尝试将密码历史记录与由SqlMembershipProvider创建的哈希密码进行比较

5

我使用的是SqlMembershipProvider,并将密码存储为哈希值。同时,我还在另一张表中保存了(哈希后的)密码历史记录。我想要比较用户尝试更改密码时输入的密码与他们旧密码的差异,并在太近的情况下抛出错误。但我似乎无法找到如何使用哈希函数来实现这一点。基本上我正在寻找这样一个方法:

public bool PasswordCompare(string plaintextPassword, string salt, string hashedPassword)
{
    //where the salt and hashedPassword are pulled out of the aspnet_Membership table
    //which are automatically generated by the provider
}

I hope this is clear, thank you.


为什么不在 aspnet_Membership 表上简单地放置一个触发器,将 UserId、密码和当前日期时间写入另一个日志表中,然后您可以查询最近的五个记录? - Thomas
@Thomas,你的建议是将密码以明文形式存储吗? - Wyatt Barnett
1
@Wyatt Barnett - 当然不是。你可以将哈希值(和盐)存储到日志表中,然后将当前的哈希值和盐与该列表进行比较。 - Thomas
这正是我想要做的,我正在存储每个哈希密码,但是如何比较它们呢?即使我输入完全相同的密码,我也无法将哈希与旧密码对齐。 - naspinski
我最终做的是更改密码,然后将其与历史记录进行比对 - 如果是重复的,则将其改回。 - naspinski
1个回答

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接