客户的Java平台,使用了spring框架自带的MD5方法来加密,我的是C#下面的MD5加密方法,我这边的加密方法只要穿字符串就行了,不要密钥,结果他那边Java平台里的MD5加密是有密钥的而且使用的是动态密钥,然后查了一下Spring的加密方式.
Acegi 对于密码提供三种方式:明文及不采用任何加密方式、MD5加密方式、哈希算法加密方式。
只需要在DAO的认证管理器中分别加入一下对应一下配置:
第一种:不使用任何加密方式的配置
Java代码
<bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider"> <property name="userDetailsService" ref="userDetailsService" /> <!-- 明文加密,不使用任何加密算法, 在不指定该配置的情况下,Acegi默认采用的就是明文加密 --> <!-- <property name="passwordEncoder"> <bean class="org.acegisecurity.providers.encoding.PlaintextPasswordEncoder"> <property name="ignorePasswordCase" value="true"></property> </bean> </property> --> </bean>第二种:MD5方式加密
Java代码
<bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider"> <property name="userDetailsService" ref="userDetailsService" /> <property name="passwordEncoder"> <bean class="org.acegisecurity.providers.encoding.Md5PasswordEncoder"> <!-- false 表示:生成32位的Hex版, 这也是encodeHashAsBase64的, Acegi 默认配置; true 表示:生成24位的Base64版 --> <property name="encodeHashAsBase64" value="false" /> </bean> </property> </bean>第三种:使用MD5加密,并添加全局加密盐
Java代码
<bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider"> <property name="userDetailsService" ref="userDetailsService" /> <property name="passwordEncoder"> <bean class="org.acegisecurity.providers.encoding.Md5PasswordEncoder"> <property name="encodeHashAsBase64" value="false" /> </bean> </property> <!-- 对密码加密算法中使用特定的加密盐及种子 --> <property name="saltSource"> <bean class="org.acegisecurity.providers.dao.salt.SystemWideSaltSource"> <property name="systemWideSalt" value="acegisalt" /> </bean> </property> </bean>第四种:使用MD5加密,并添加动态加密盐