一般情况下,系统的用户密码都会经过一系列的加密才会存储到数据库或者别的资源文件。
盐值加密:把你原来密码,加上一些“盐”然后再进行一些列的加密算法。
比如你的密码是:899312 用户名是:gaobing
在security 中盐值加密可以是这样加“盐”的899312{gaobing} 然后 ,在进行一些列的加密。
上一篇日志中介绍了三种登陆设置,这边用数据库的那种作为例子:
<authentication-manager> <authentication-provider user-service-ref='myUserDetailsService'> <password-encoder hash="md5"><salt-source user-property="username"/></password-encoder> </authentication-provider> </authentication-manager> <b:bean id="myUserDetailsService" class="org.springframework.security.core.userdetails.jdbc.JdbcDaoImpl"> <b:property name="dataSource" ref="dataS" /> </b:bean>
说明:
<salt-source user-property="username"/> 这一句即声明了所加的盐值,即数据库中的username字段。
<password-encoder hash="md5"> 在他的属性中指明了加盐之后的加密算法 即MD5(应该是32位 我测试是32位的)
这样设置后你的数据库中的密码也应该是经过盐值加密的。
比如username:gaobing 在数据库中的password应该是899312{gaobing}经过MD5加密后的 4daf885e05ff45a72ada6652a3727b6a。
在你登陆的时候你输入用户密码后security也会用同样的加密方式去和数据库中的password匹配。