使用 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/