对称加密:同一个密钥可以同时用作信息的加密和解密
密码常用的认证流程:
1.用户输入密码后,进行函数散列(如md5)。
2. 通过网络传输至服务器
3.服务器通过用户名找到密码,进行同样的函数散列
4.比对确定密码正误。
问题:如果有程序对网络进行监控,那么是能够得到用户名与散列之后的密码。
之后由盗窃者完成认证的过程。
浏览器采用的解决方案是https.对传输的数据本身进行加密,
我们不谈,转到密码本身上来。
密码通过一定算法转换为对称密钥后,这个流程可以变为:
1.用户直接通过用户名请求服务认证
2.服务通过用户名找到密码,密码转换为密钥
3.服务生成一个临时token,并对token进行密钥加密
4.将加密后的token返回给用户
5.用户通过自己的密码对应的密钥解密token
6.通过token访问服务