我正在使用SCrypt
使用nuget管理器安装了它。
然后
位于每个动作之前的顶部:
ScryptEncoder encoder = new ScryptEncoder();
注册操作:
tblUser userItems = new tblUser();
string hashedPassword = encoder.Encode("mainObject.Password");
useritems.emailadd = mainObject.emailadd;
userItems.password = hashedPassword;
db.tblUsers.Add(userItems);
db.SaveChanges();
它确实有效,数据库中保存的密码已散列。
登录操作:
var x = th.tblUsers.Where(a => a.emailadd.Equals(ms.Email)).First();
bool areEquals = encoder.Compare("ms.Password", x.password.ToString());
var dataItem = th.tblUsers.Where(a => a.emailadd.Equals(ms.Email) && areEquals == true).First();
在我调试时,第二行bool返回false。 无法弄清楚,我怎么做错了。