第五種:使用哈希算法加密,加密強度為256
- <bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">
- <property name="userDetailsService" ref="userDetailsService" />
- <property name="passwordEncoder">
- <bean class="org.acegisecurity.providers.encoding.ShaPasswordEncoder">
- <constructor-arg value="256" />
- <property name="encodeHashAsBase64" value="false" />
- </bean>
- </property>
- </bean>
第六種:使用哈希算法加密,加密強度為SHA-256
- <bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">
- <property name="userDetailsService" ref="userDetailsService" />
- <property name="passwordEncoder">
- <bean class="org.acegisecurity.providers.encoding.ShaPasswordEncoder">
- <constructor-arg value="SHA-256" />
- <property name="encodeHashAsBase64" value="false" />
- </bean>
- </property>
- </bean>
上述配置只是在Acegi通過表單提交的用戶認證信息中的密碼做各種加密操作。而我們存儲用戶密碼的時候,可以通過一下程序完成用戶密碼操作:
- package com.brofe.acegi;
- import org.acegisecurity.providers.encoding.Md5PasswordEncoder;
- import org.acegisecurity.providers.encoding.ShaPasswordEncoder;
- public class TestPasswordEncoder {
- public static void main(String[] args) throws Exception {
- md5(); // 使用簡單的MD5加密方式
- sha_256(); // 使用256的哈希算法(SHA)加密
- sha_SHA_256(); // 使用SHA-256的哈希算法(SHA)加密
- md5_SystemWideSaltSource(); // 使用MD5再加全局加密鹽加密的方式加密
- }
- public static void md5() {
- Md5PasswordEncoder md5 = new Md5PasswordEncoder();
- // false 表示:生成32位的Hex版, 這也是encodeHashAsBase64的, Acegi 默認配置; true 表示:生成24位的Base64版
- md5.setEncodeHashAsBase64(false);
- String pwd = md5.encodePassword("123", null);
- System.out.println("MD5: " + pwd + " len=" + pwd.length());
- }
- public static void sha_256() {
- ShaPasswordEncoder sha = new ShaPasswordEncoder(256);
- sha.setEncodeHashAsBase64(false);
- String pwd = sha.encodePassword("123", null);
- System.out.println("哈希算法 256: " + pwd + " len=" + pwd.length());
- }
- public static void sha_SHA_256() {
- ShaPasswordEncoder sha = new ShaPasswordEncoder();
- sha.setEncodeHashAsBase64(false);
- String pwd = sha.encodePassword("123", null);
- System.out.println("哈希算法 SHA-256: " + pwd + " len=" + pwd.length());
- }
- public static void md5_SystemWideSaltSource () {
- Md5PasswordEncoder md5 = new Md5PasswordEncoder();
- md5.setEncodeHashAsBase64(false);
- // 使用動態(tài)加密鹽的只需要在注冊用戶的時候?qū)⒌诙€參數(shù)換成用戶名即可
- String pwd = md5.encodePassword("123", "acegisalt");
- System.out.println("MD5 SystemWideSaltSource: " + pwd + " len=" + pwd.length());
- }
- }
|