1
loading 2014-03-22 17:55:41 +08:00 via iPhone
拼上一个128位的salt,还是那么短时间么?
|
2
wwek 2014-03-22 18:00:21 +08:00
密码还是要加盐的·
|
3
icylogic 2014-03-22 18:28:08 +08:00 via iPad
两次hash加盐,有现成轮子,前段时间startup上有过http://blog.jobbole.com/61872/#toc3
|
4
9hills 2014-03-22 18:30:56 +08:00
Crypt是有salt的,别说5.6天了,5、6年也不可能
但是生成的不适合做密码,还是以它的生成结果再转换成适合密码的格式才行 |
5
hopestar86 OP |
6
jsonline 2014-03-22 18:50:32 +08:00 via Android
加真随机眼就基本无解了。
|
7
raincious 2014-03-22 19:36:13 +08:00
@hopestar86
> “生成结果再转换成适合密码” base64? base64等于没转换。为了安全的话,SHA512自己跑100轮其实也就够了嗯。这样除非是特别牛叉的指定攻击一个人的密码,否则盗取密码的人逆算出所有密码的代价太大了。 |
8
9hills 2014-03-22 19:39:37 +08:00
@hopestar86 首先你要使用安全性高的Bcrypt,然后有两种使用场景
1. 强固定密码 + 可泄漏的salt。把salt放入程序文件,但是使用强密码。salt泄漏后可以计算彩虹表,但由于Bcrypt的计算难度很大,相当于速度很慢的穷举(有多慢?差不多一个密码得试0.3s,而且硬件基本无关)。可以计算出你的密码被穷举到的概率是非常小的,5、6年不夸张 但是这个的弱点是,你需要为每个站都设置一个强固定密码,否则一旦某个站被明文脱裤。。。那反过来讲,既然每个站都设了强密码,那还用这套系统干啥。。 2. 强固定密码 + 弱salt(不固定,但容易被猜到,比如站点的名字) 这样你只需要记住一个固定密码,然后根据不同的站点使用不同的salt。。。这个就算这个站被明文脱裤,也不影响其他站的密码 你需要记忆的仅仅是一个固定密码,然后每个站的名字你可以选择域名的中间部分,比如v2ex。我就是这么做的,安全性没有任何问题。。 所以推荐你用第二种。 |
9
raincious 2014-03-22 20:09:43 +08:00
@9hills +1
上次被骂之后我已经学得很乖,密码都是N次Hash(SHA512,第一次的时候加站点的SALT)跑好,然后开始算个随机Salt跑再crypt N次(算法根据服务器,Blowfish排第一)。 但其实任何密码都是不安全的,在拿到加密的串之后。 不过呢,如果真的能保证加密算法的保密性,自己写个位偏移或许也是安全的。但是最佳事件不是自己发明一个算法然后期望别人不会算出规律来破解,而是使用现有的强算法,根据业界多年的最佳经验来做加密。 |
10
SkyFvcker 2014-03-22 21:22:14 +08:00
楼上几位都理解错了,楼主要的是加密,而不是校验,因此Hash是不能用的(因为无法解密)
对Crypt类不清楚,查资料发现是用的DES。 虽说DES目前还没有可以5-6天可以破解,但是有条件还是推荐AES。 相比而言我认为比算法选择更重要的是口令安全,毕竟枚举口令比枚举密钥空间要简单很多。 |
11
SkyFvcker 2014-03-22 22:12:52 +08:00
更正一下,DES目前用专用设备可以做到一天内破解,看楼主需求了
|
13
11138 2014-03-22 22:50:37 +08:00
目前比较好的选择是AES和Blowfish。
BCrypt使用的就是Blowfish算法。 |
14
emric 2014-03-22 23:04:22 +08:00
暂时在用 PBKDF2 + sha256 + salt
把 PBKDF2 丢到客户端计算, 不知道这算不算的上好的方法. |
15
fange01 2014-03-22 23:09:25 +08:00
关键是你的常用密码都已经泄露的,再加密有个鸟用。。。有个几个T社工库的大有人在
|
16
lygmqkl 2014-03-24 14:19:35 +08:00
fenge01+1 问题就在于常用密码被泄漏,有几个人能做到分级密码?有几个人能做到定期更换密码?有几个人能做到分级密码+定期更换?
大数据库不会被破,成本太高,个别密码不是被破得,是被“获得”得。 |