我是在一篇论文中看到的一种给密码加盐加密的方式,之前也有了解过一些加盐加密,下面是这篇论文中的加盐加密方式:
假定:注册阶段已完成,此时,客户端已拥有账号与密码;
服务器端已建立起用户密码库, 存储模式为( userid,
password_hash ) , 盐值单独存放, 防止拕库, 存储模式为
(userid,salt_hash,cost),其中cost 字段为慢哈希代价,用来挃定客户
端的慢哈希速度,cost 值越大,web 端运行越慢。
则登彔阶段的协议描述为:
(1)客户端以userid 収起登彔请求。
(2)服务器端响应,生成一随机盐值salt=random(),h(salt)存
储,选定cost 值,将cost、salt 収送。
(3)客户端计算r= PBKDF2( PRE, Password, Salt, cost, LEN),
収送。PRE 为随机函数,LEN 为辒出长度。
(4)服务端收到r,与自己计算的PBKDF2 (password, salt, cost)比较,若相等,则存储于password_hash 字段,通过认证。若不相等则丢弃。
想问第四步中服务器自己计算的password是从哪得到的,如果是上次存储的password_hash,那在password正确的情况下客户端计算出的r和服务器计算出的r应该不一样,因为每次登陆都会随机一个salt值,请各位大神帮忙看一下,这个方案具体是怎么考虑的,谢谢!