用户提供密码(password)来加密用户的数据,但是通常用户提供的密码较为简单。有没有一个可靠的方案来根据用户密码生成密钥来加密数据,使得加密数据不容易被常规破解?
简单点的方案是使用一个服务端生成的与用户相关的随机串作为盐 salt ,然后生成真正的对称加密密钥(password 和 key 都不存储在服务端,而 salt 存储在服务端),如 key=sha256(password+salt)
但是这样其实最大的隐患是 salt 表不能丢,一旦 salt 表泄漏,还是难免被穷举,而且用户经常使用有意义的词,所以较容易破解成功。
1
fetich 2016-06-20 16:58:06 +08:00
都放弃治疗了,就别操太多心了。
|
2
yeyeye 2016-06-20 17:00:19 +08:00
一般要限制密码的强度 要不然用户就会乱七八糟设密码 限制了规则 用户又会很遵守 所以稍微限制一下是很有必要的
|
3
jugelizi 2016-06-20 17:04:26 +08:00
所以为什么允许用户弱口令?谁背安全的锅?
密码目前加盐 salt 位数 6 位以上再二次 md5 即便脱裤也不会大范围被爆破呀 |
4
gamexg 2016-06-20 17:05:31 +08:00
增加解密计算量。
为了防止预先准备彩虹表,在为每用户独立生成盐即可。 |