Spring security的MD5加密和StandardPasswordEncoder的配置详解

1、MD5加盐值进行加密处理

springsecurity.xml文件配置:(springsecurity.xml是spring安全的配置)


       
            
                <!-- username  密钥-->
            

        

      
 

 

直接配置 hash = 'md5' 等效于单独配置
这样,登录时输入的用户密码将会使用md5(加盐值)加密后与数据库里的密文进行匹配。
对应的MD5加密和匹配Java代码:

 

import org.springframework.security.authentication.encoding.Md5PasswordEncoder;

public class SpringsecurityMd5 {
    
    private static final Md5PasswordEncoder md5encoder = new Md5PasswordEncoder();
    /**
     * 加密方法
     * @param rawPass 密码
     * @param salt
     * @return
     */
    public static String md5encode(String rawPass, String salt) {
        return md5encoder.encodePassword(rawPass, salt);
    }
   /**
    * 
    * @param encPass数据库密码
    * @param rawPass输入的密码
    * @param salt 
    * @return
    */
    public static boolean md5match(String encPass, String rawPass, String salt) {
        return md5encoder.isPasswordValid(encPass, rawPass, salt);
    }
    
    public static void main(String[] args) {
        System.out.println(SpringsecurityMd5.md5encode("123456", "xl"));
        System.out.println(SpringsecurityMd5.md5match("4bf274bf24ca205761df184081b5407d", "123456", "xl"));
    }

}
 

 

2、Spring security3新的StandardPasswordEncoder 标准加密方式



         value="xl"注意这里的秘钥值 

    

    
     获取用户所具有的角色认证管理 , 需要自己编写service来实现,编写的这个service ,需要实现UserDetailsService接口
    
            
        

 

 

import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.crypto.password.StandardPasswordEncoder;
/**
 * 盐值不需要用户提供,每次随机生成;多重加密——迭代SHA算法+密钥+随机盐来对密码加密,
 * 大大增加密码破解难度,加密后得到的密码是80位。
      注意这里的秘钥配置,不配置秘钥也是可以的。
 * @author Administrator
 *
 */
public class SpringStandardPasswordEncoder {
    private static final PasswordEncoder encoder = new StandardPasswordEncoder("xl");//秘钥值  
    
    public static String encrypt(String rawPassword) {  
         return encoder.encode(rawPassword);  
    }  
   /**
    * 
    * @param rawPassword
    * @param password  数据库加密的
    * @return
    */
    public static boolean match(String rawPassword, String password) {  
         return encoder.matches(rawPassword, password);  
    }  
    
    public static void main(String[] args) {
        
        System.out.println(SpringStandardPasswordEncoder.encrypt("admin"));
    }

}

 

 

住:注册的时候 先把密码加密再存储到数据库

 

转载于:https://my.oschina.net/m243043962/blog/1550380

你可能感兴趣的:(Spring security的MD5加密和StandardPasswordEncoder的配置详解)