什么叫盐值加密 Spring security怎样进行盐值加密
以前的md5原理是
密码密文=md5算法(密码明文);
这样明文与密文其实还是一一对应的
那么人家就可以用字典攻击(就是一个一个的试)来探测密码
加盐(盐值加密)的算法很多
Spring security用的是:
密码密文=md5算法(密码明文{盐值});
这个盐值就可以自己随便设置了,弄一个静态字符串或者用用户的登录名
举个例子:
用户名:thr
密码:fou
用用户名作为盐值
打开网页:http://www.md5.org.cn/md5/Encrypt.asp
输入:thr{fou}
得到密文:5dbae131e3eea6ce50068aab9292c8c3
OK.应该明白了
<authentication-provider>
<!–
<password-encoder hash=”md5″/>
INSERT INTO USER VALUES(1,’admin’,'21232f297a57a5a743894a0e4a801fc3′)
INSERT INTO USER VALUES(2,’user’,'ee11cbb19052e40b07aac0ca060c23ee’)
–>
<password-encoder hash=”md5″>
<!–
<salt-source user-property=”username”/>
盐值加密原理:Md5(password + {salt})
INSERT INTO USER VALUES(1,’admin’,'ceb4f32325eda6142bd65215f4c0f371′)
INSERT INTO USER VALUES(2,’user’,'47a733d60998c719cf3526ae7d106d13′)
–>
<salt-source user-property=”username”/>
<!– 也可以直接用一个字符串作为盐值
<salt-source system-wide=”salt”/>
–>
</password-encoder>
<jdbc-user-service data-source-ref=”dataSource”
users-by-username-query=”select username,password XXXXX”/>
</authentication-provider>