我使用SimpleMembershipProvider作为我的数据库提供程序。
我已经添加了新的功能来通过继承来改进这个提供程序。
现在我想创建一个像"ChangeEmail“这样的函数,但是在检查输入的密码是否正确之前。
因此,我必须加密输入的密码,并将结果与我的数据库中的条目进行比较。
问题是:
SimpleMembershipProvider以什么方式加密密码?
我试过:
Crypto.HashPassword(currentPassword);结果是相似的,但在数据库中不是这样的。
PasswordFormat属性设置为MembershipPasswordFormat.Hashed。
例如,在注册时生成"123456“的散列:
AIYlAKcmDaABMw1PVx1kheZq2KXkhVs4QjO7MnwfHPcTBjnmRobRqJzWYHYO/S4T7w==这是通过Crypto.HashPassword:
AG+md+0W2EuV9BzUdohkYMK547jB5ochvxeVKYQTkls0UQ+3W0BWPHnFoffiIn2byw==它看起来是相同类型的编码,但为什么结果是不同的呢?
发布于 2013-01-14 14:48:45
Crypto.HashPassword为每个调用生成一个新的salt,因此每次输出都会不同。若要验证使用Crypto.VerifyHashedPassword。
或者直接使用Rfc2898DeriveBytes。这允许您优化散列成本,并且可以避免使用大于本机大小(20字节)的散列。
https://stackoverflow.com/questions/14309900
复制相似问题