SpringSecurit盐值加密的密码验证以及强密码验证过程
作者:思祺班
在密码加密过程中,盐值的使用可以增强密码的安全性,如果忘记存储盐值,将无法验证密码,强密码应包含数字、字母和特殊字符,长度应在8到30位之间,以提高账户安全
SpringSecurit盐值加密的密码验证及强密码验证
1、有的时候我们盐值加密的时候没有存入盐值
值存入了密码,然后怎么样验证这个密码呢
以下代码展示:
PasswordEncoder pe = new BCryptPasswordEncoder();
//比较密码
//pe.matches (“前端存过来的密码记得是没有加密的”,“在数据中存储的加密的密码”) ;
boolean matches = pe.matches (changePwdDTO.getOldPassword(),iamAccount.getAuthSecret()) ;
if (!matches){
throw new BusinessException(Status.FAIL_OPERATION, "旧密码错误,请重新输入");
}
//判断密码是否包含相关的字符,数字,字母
if(!check(changePwdDTO.getConfirmPassword())){
throw new BusinessException(Status.FAIL_OPERATION, "密码必须至少为8位字符,其中包含数字、字母及特殊字符");
}
2、强密码验证
包含数字、字母和特殊字符,长度要求8到30位
package security;
/**
* 密码校验:包含数字、字母和特殊字符,长度要求8到30位。
* @author lxzqz
*
*/
public class CheckPassword {
public static final String REGEX_PASSWORD_STRONG = "^(?![0-9]+$)(?![^0-9]+$)(?![a-zA-Z]+$)(?![^a-zA-Z]+$)(?![a-zA-Z0-9]+$)[a-zA-Z0-9\\S]{8,30}$";
/**
* 密码校验,符合强密码规则返回true,否则返回false
* @param password
* @return
*/
public static boolean check(String password) {
boolean flag = password.matches(REGEX_PASSWORD_STRONG);
return flag;
}
}总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
