大家一般怎么生成盐的啊。。

2017-12-28 02:02:28 +08:00
 flowfire

nodejs 里用 crypto.randomBytes 生成一个 32 字节的随机数够不够。。
以及密码 hash 就直接用 hamc(password, salt) 么 = = 啥算法比较好.。。sha256 够么= =

15586 次点击
所在节点    程序员
65 条回复
thetast
2017-12-28 02:20:53 +08:00
楼下超市买😁
kmdgeek
2017-12-28 02:54:19 +08:00
重结晶?(捂脸逃
bao3
2017-12-28 02:55:36 +08:00
跑步后不要洗澡,大约 5 分钟得到盐
moult
2017-12-28 03:34:38 +08:00
盐么,没必要想那么复杂,随机来个 32 位的字符串差不多了。
密码加密么,Symfony 做法是将密码和盐拼凑一起进行 SHA,然后将 SHA 的结果和密码和盐拼凑一起进行 SHA,就这样来个 5000 次。。。
dangyuluo
2017-12-28 04:25:28 +08:00
salt 有必要这么长么?看了一些系统的代码,4 位 8 位居多
yangqi
2017-12-28 05:05:27 +08:00
加盐并不能提高安全性
cnnblike
2017-12-28 06:26:31 +08:00
可以去 random.org 上生成的——但问题不在盐上,盐只是整个系统的一环,被攻破的时候最后出问题的往往不是盐而是一些愚蠢的设计。
flowfire
2017-12-28 07:52:49 +08:00
@yangqi ..... 为啥…………就算提高不了好歹也能防彩虹表吧

@cnnblike 给用户生成盐还要调接口是不是太慢了一点
Torpedo
2017-12-28 07:59:22 +08:00
bcrypt 啊
mozutaba
2017-12-28 08:35:21 +08:00
尿完不冲,自动结晶
phx13ye
2017-12-28 08:38:17 +08:00
建议 argon2,
argon2.generateSalt().then(salt => {
argon2.hash('some-user-password', salt).then(hash => {
console.log('Successfully created Argon2 hash:', hash);
// TODO: store the hash in the user database
});
});
justfindu
2017-12-28 08:41:05 +08:00
6-12 位 random 生成字母数字标点. 然而现在一般用 bcrypt
xomix
2017-12-28 09:02:44 +08:00
首先肯定要加个时间戳,然后你可以密码加用户名然后 md5 做盐,你还可以密码 md5 前 16 位加用户名 md5 后 16 位假装自己是 32 位 md5,加盐后验证奇数或偶数位的 md5 假装自己是动态 md516 位加密。(客户端随机传奇偶位,服务器端两种验证都做,有一种通过即可)
让想逆推的人慢慢猜。
yilai
2017-12-28 09:13:15 +08:00
参考 django
dilu
2017-12-28 09:16:24 +08:00
加盐不如 bcrypt 虽然速度下来了 但是安全性能上去了
me1ody
2017-12-28 09:18:10 +08:00
如果密码简单在复杂的 salt 也是一样的,所以 salt 4-6 位即可
Cat73
2017-12-28 09:19:30 +08:00
@moult 我们项目还真差不多就这样的,用户的 ID 加随机 8 个字符当盐,盐+密码来一次 hash,然后 hash+密码继续 hash 上 pow(2, 8 + 3) 次,最后的密码是 3(hash 次数) + 盐(不含用户 ID 的部分) + hash
mcfog
2017-12-28 09:22:00 +08:00
配置的 secret/固定盐的话 openssl 命令生产,密码的话,不用自己手动生成盐,用类似 http://php.net/password_hash 的专用类库做这件事情,一个字段包含算法、盐、哈希,而且很容易支持 rehash,指定 cost 之类的
clino
2017-12-28 09:25:56 +08:00
whx20202
2017-12-28 09:29:26 +08:00
来来来看这个 http://blog.jobbole.com/61872/
如果不懂建议无脑 bcrypt

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

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

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

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

© 2021 V2EX