萌新不懂就问,rsa公钥+hash,hash做什么的。
最近学习一下密码学,
发现B站登录的时候,滑动验证码会返回一个rsa的公钥+hash,
而且rsa公钥一直不变,估计是定期更新,
下面有图:
萌新不懂就问:
1:这个hash是做什么用的
2:假如用户输入账号密码的时候, 正好更新了公钥, 用户体验岂不是太差了。
3:用rsa前端密码公钥加密, 后端私钥解密拿到明文在做其他加密处理存库, 岂不是违背了密码只有上帝和自己知道的原则?不应该是前端不可逆加密后传给后端,后端在做处理嘛,(这里不探讨https)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
1.公钥定期更新?你看到它定期变了?不要想当然,你不要猜测它是定期更新就把他当事实来提问,你确实看到它定期变了再来问这一点
2.你去看google的登陆,直接是协议内传明文,难道违背了密码只有上帝和自己知道的原则?服务器拿了不代表服务器要存啊
另外题主的 岂不是违背了密码只有上帝和自己知道的原则 这句话里面的 密码 指的是什么?
如果是说登录密码,那么:
注册时:
salt
md5(pwd + salt)
(举例,具体做法自由定义)登录时:
md5(pwd + salt)
对于你说的 CSDN 事件,经过上述流程后,脱裤得到的密码都是处理后的值而且因为是摘要算法所以很难通过 (pwd_md5 + salt) 逆推得到密码原文,同时 服务器不需要知道你明文密码是什么就可以知道你密码是否正确了。
至于登录过程中明文密码的安全工作,不考虑 HTTPS 的话,可以裸奔、可以手动套一层 RSA 之类的东西,也可以改进上面的流程:
注册时:
salt
sha1(pwd)
对明文密码先计算一次 SHA1 摘要md5(pwd + salt)
网络传输过来的就已经不是明文密码了,但是服务器不需要关心这些登录时:
sha1(pwd)
对明文密码先计算一次 SHA1 摘要md5(pwd + salt)
与注册时同理注册的第二步和登录的第一步可以顺延一步再做,因为突然想起来需要对密码是否符合要求(长度、大小写、数字那些)进行检查,只在前端做这些规则检查的话可以被构造请求来绕过。
考虑到这一点的话,那么不考虑 HTTPS 的情况下直接传输明文或者是加密后的密码都是可以接受的。