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; } }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。