旧的系统密码存储的是md5(password),理论上md5在有限的时间空间内是不可逆的(实际上已经有人可以了)
一般使用md5(password),加加密后的密码进行保存
但这会有一个比较严重的问题,比如密码是123456的用户,存储的密码值都是e10adc3949ba59abbe56e057f20f883e
这样就会导致,如果被暴库后,可以拿已知的字典表来直接匹配了(所有e10adc3949ba59abbe56e057f20f883e的用户密码都是123456,这不是废话么)
一般的处理方式是加盐(salt),也就是md5(相对不变的内容+密码),这样即使密码一样,存储的内容也不一样,“相对不变的内容”一般会是用户名
这样的话,存储的是md5(userName+password)
这样就会好很多了,但是如果你的系统以前使用的md5(password),那么,你本身并没有存储password,要升级到这个方案,基本是不可行的。
md5(userName+md5(password)),这样的方案就优雅些了,也加了盐,也可以从原有的系统进行平滑升级
一般使用md5(password),加加密后的密码进行保存
但这会有一个比较严重的问题,比如密码是123456的用户,存储的密码值都是e10adc3949ba59abbe56e057f20f883e
这样就会导致,如果被暴库后,可以拿已知的字典表来直接匹配了(所有e10adc3949ba59abbe56e057f20f883e的用户密码都是123456,这不是废话么)
一般的处理方式是加盐(salt),也就是md5(相对不变的内容+密码),这样即使密码一样,存储的内容也不一样,“相对不变的内容”一般会是用户名
这样的话,存储的是md5(userName+password)
这样就会好很多了,但是如果你的系统以前使用的md5(password),那么,你本身并没有存储password,要升级到这个方案,基本是不可行的。
md5(userName+md5(password)),这样的方案就优雅些了,也加了盐,也可以从原有的系统进行平滑升级