一种简单的密码验证方案2

1.过程

(1). 客户端将name(或者经过加密), 一个服务器约定的公共salt, 密码password(或者经过hash), 当前时间t
   计算 data = hash(salt+name+password+t)
   发送 nane, t, data到服务器
(2). 服务器从数据库提取密码
   如果t与当前时间相差超过阀值, 则认为数据已经过期, 要求客户端重新发送.
   计算 data = hash(salt+name+password+t)
   如果和客户端发来的相等, 则通过验证


2. 抗窃听
  窃听者可以通过窃听的信息登录服务器, 但是必须是在时间t附近.
 (如果把t改成服务器发送的一次性随机数, 则可以避免这个缺陷, 但是过程会复杂一点).


4. 抗穷举
   由于hash使用了特定salt和name, 无法通过预先制定的词典攻击password.


5. 扩展应用
   根据一组服务器内部共知而对外部秘密的password和salt,
   用hash生成的data可以给客户端作为session登录各个服务器.
   这种情况:
   (1)客户端不知道password和salt, 因而无法伪造session, 这个password可以随时改变,
      只要所有服务器同时修改就可以.
   (2)data中含有name信息, 因而不可以用一个用户的session登录另外一个用户
   (3)由于t的存在, session有效期有时限.

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值