【发布时间】:2011-09-26 07:40:45
【问题描述】:
使用 BCrypt 的 C# 实现之一对密码进行哈希处理并将其存储到 SQL 数据库中。但是,当我返回验证哈希字符串时,BCrypt 生成的哈希值与数据库中要比较的哈希值不同。盐和因素明显相同。
这是我所知道的
$2a$12$vF/1s3MqIzHwnDshyzH/rOYUelofrj4UWv./vzWqk4o2K0uwhix7W 实际上是“Qwerty123”,它存储在一个初始化为 [nvarchar] (200) 的列中。
当我根据实现使用 BCrypt.Verify() 或 BCrypt.CheckPassword() 时,我会跟踪它,直到它进行比较之前,它要与前面提到的比较的哈希值是 $2a $12$vF/1s3MqIzHwnDshyzH/rOKVRePZSXFXaIpDv6.IPkbPEoOxZgSEe
如果您仔细观察,您会发现盐和因子部分是相同的。知道是什么原因造成的吗?
我正在使用的显式实现可以在这里找到http://bcrypt.codeplex.com/
【问题讨论】:
-
如果你在一台服务器上重复BCrypt相同的字符串,你会得到相同的加密版本吗?
-
是的,使用相同的字符串和盐每次生成的哈希都是相同的。
标签: c# asp.net hash passwords bcrypt