MySQL原生密码认证过程(附图)

转载-宋利兵的微信公众号,只看文字相信有些同学会晕,所以画了张图。
解释如下:
1,mysql.user表中存储的是两次sha1加密过后的stage2hash,这个是无法反解密到passwd的。
2,每次客户端链接过来,在进行密码验证时,mysqld会发送随机字符串scramble到客户端。并且mysqld会利用stage2hash+scramble进行一次sha1操作,生成一个key。
3,客户端利用用户输入的passwd生成stage2hash,再加上mysqld发送过来的scramble进行一次sha1操作,生成和mysqld相同的key。然后再拿这个key和stage1hash进行一次xor操作,生成ciphertext,发送给mysqld
4,mysqld拿到客户端发送的ciphertext,加上之前生成的key,进行一次xor逆向操作,解密出stage1hash,再对stage1hash进行一次sha1操作,生成stage2hash,再拿着这个stage2hash和mysql.user表中存储的信息对比,如果一致,则此次密码认证通过。

image_1ciquhe0510k4fkcj0g80l16vi9.png-156.9kB

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值