一个抗脱库的密码哈希方法

2023-07-14 19:43:56 +08:00
 chenjia404

我之前做过一个方案: 哈希(用户名+密码+网站名)发送给服务器,服务器拿到提交的哈希和用户名,再哈希(用户名+密码+网站名+盐),把最后一步的哈希存在一张哈希表里面,下次用户登录的时候,只需要验证哈希表中是否有元素即可。 修改密码的时候修改用户的盐,写入新的哈希记录就行了,而且哈希表越来越大,每个网站的哈希表都不一样,泄露也没有办法跑彩虹表。 哈希函数只要是在 sha1 以上的,基本上冲突的可能性就很小。 这个方案也不需要提交明文密码到服务器,过安全测评也好过。

2460 次点击
所在节点    奇思妙想
31 条回复
RatioPattern
2023-07-14 21:11:42 +08:00
直接上感觉有问题,有没有大佬解析下
dic
2023-07-14 21:25:08 +08:00
直接 Bcrypt 就行了。
dcsuibian
2023-07-14 21:39:44 +08:00
修改密码的时候修改用户的盐是什么意思?盐不应该就一个么
duke807
2023-07-14 21:40:12 +08:00
仅密码加网站名做 sha 运算和比对就行了
用户名不需要
这样不会有碰撞
chenjia404
2023-07-14 22:48:13 +08:00
@dcsuibian #3 每个用户一个盐,修改密码的时候就更新盐。
chenjia404
2023-07-14 22:48:38 +08:00
@duke807 #4 如果没有用户名,怎么确定这个哈希是这个用户呢?
rekulas
2023-07-14 22:59:39 +08:00
我看了半天,你这个所谓的方案跟正常加盐 hash 没有区别

hash(用户名+密码+网站名+盐)
hash(密码+盐)

如果你觉得这两个安全性不一样的话只能说明你的盐有问题
duke807
2023-07-15 08:40:58 +08:00
@chenjia404 用户名 明文 传输到服务器
chenjia404
2023-07-15 12:32:24 +08:00
@rekulas #7 这个没有明文密码到服务器,以及不会被彩虹表破解,用户密码不会被反向破解出来。
googlefans
2023-07-15 14:01:48 +08:00
以后直接建内容站 直接静态
不用数据库了
lete
2023-07-15 17:22:49 +08:00
了解一下: https://unpwd.github.io , 用户直接自己加密,就连你服务器都不知道我用户的明文密码
lucybenz
2023-07-15 21:00:10 +08:00
说复杂了 简单讲就是做了密码字段客户端加密
rekulas
2023-07-15 21:36:49 +08:00
@chenjia404 其实前端传输密码 hash 早就普及开了,至于破解这个只要有足够安全的盐,你在里面再加入其它别的什么难度并没有提高或降低
chenjia404
2023-07-15 23:58:48 +08:00
@rekulas 你没有看明白,这个方法,你没有办法反推用户密码
dode
2023-07-16 01:33:14 +08:00
现在有新接口了,客户端直接使用私钥验证信息,服务器端存储每个用户设备的公钥
8E9aYW8oj31rnbOK
2023-07-16 14:11:49 +08:00
想法不错,多了一层“主观逻辑加密”
patrickyoung
2023-07-16 19:36:07 +08:00
@chenjia404 #14 并没有没有办法这一说,只是你主观安全而已,建议系统的重学密码学。整个方案就是普通的加盐 hash
iX8NEGGn
2023-07-16 21:56:45 +08:00
你这不就是把(用户名、网站名)当作盐而已嘛,还没有直接用随机的盐安全
tt7
2023-07-17 00:09:57 +08:00
@chenjia404 #9 明文密码,和没有随机数的密码 hash 有什么区别吗?
chenjia404
2023-07-17 03:07:57 +08:00
@patrickyoung #17 传统的加盐 hash ,保存了哈希和用户的对应关系,我这个没有保存用户和哈希对应关系。

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

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

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

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

© 2021 V2EX