求问:主流站点登录加密方式?

2020-12-21 11:56:05 +08:00
 acr0ss
我想请教一下,现在业界都怎么处理登录密码传输呢?

我看主流网站,百度、京东、淘宝和 qq 等,都会把登录密码加密传输,而且参数很多,是有什么通用加密规则吗?


未防止不必要的跑题、炫耀等,我事先声明,我了解:
1. 对称非对称加密基本知识
2. 可逆非可逆摘要算法基本知识
3. HTTPS 基本知识,包含不限于数字签名、信任机构、信任链等。


我只想了解:
1. 为什么加密
2. 加密的主流通用规则
5273 次点击
所在节点    程序员
69 条回复
YouLMAO
2020-12-23 14:44:39 +08:00
@hehe12980 后端的数据库一般 save 加盐后的 hash,从来没有直接 md5 的,因为裸 md5 直接拿常见密码 md5 碰撞即可
hehe12980
2020-12-23 16:15:44 +08:00
@YouLMAO 注册的时候就是加密过的 也就是在客户端那一层再做一层加密 后面传输就不是明文了 后面服务端还是该怎么做就怎么做
YouLMAO
2020-12-23 16:31:30 +08:00
大哥,这是散列那是加密呀,注册不传原文,闻所未闻,可以设计,但是 p9 架构师不批准
hehe12980
2020-12-23 16:47:59 +08:00
@YouLMAO 注册不传原文的好处 即使密码被中间人嗅探 那也是拿到一个串 如果传原文, 现在大部分用户都是一个密码通用, 一旦被截获, 得 所有平台通用
xuanbg
2020-12-24 09:31:37 +08:00
@Veneris #56 数据库怎么可能存明文???加盐哈希只不过不希望数据库存的密码 hash 直接在网络上传输罢了,数据库存的密码 hash 被抓到基本等同于密码被抓到。随机到相同盐是不可能的,这个盐你可以用雪花 id 、uuid……。至于哈希碰撞的可能性是存在的,但无限接近于 0 。因为正常情况下,这个加盐后的临时密码 hash 只存在几十个毫秒的时间。这么短的生命周期,都能碰上,那也是没办法的事情。

这么做唯一的目的就是:不希望数据库存的密码 hash 直接在网络上传输。这也算过度设计的话,安全方面的加固,就啥都不用干了,干了就是过度设计。
xuanbg
2020-12-24 09:40:16 +08:00
@YouLMAO 注册为啥要传原文?传 MD5 不行吗?数据库为啥要存原文?存 md5(id+MD5)不行吗?我就告诉你吧,我的临时 hash 就是 md5(uuid+md5(id+MD5)),然后返回给客户端 uuid 。客户端计算 md5(uuid+md5(id+md5(用户输入密码))),就得到了和服务端一样的 hash 值了。这样就可以避免密码原文、密码的 MD5 值,还有数据库存的密码值暴露在网络上面。
LostPrayers
2020-12-24 11:19:14 +08:00
@YouLMAO Bcrypt 加密了解一下,各种语言都有实现方案,比如 Spring Security 之类的都会内置它
YouLMAO
2020-12-24 11:32:29 +08:00
@LostPrayers 为了达到不传原文,这样真的过度设计了,你点一下登录,居然要先根据 username 问后端拿盐,然后前端 hash 再回传。fb 三十亿月活看到这直摇头
hehe12980
2020-12-24 14:30:25 +08:00
@YouLMAO 你有相对 安全的,不所谓过度设计,月活三十亿的登录具体设计方案么

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/737439

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX