springBoot+springSecurity验证密码MD5加密

2/10/2017来源:ASP.NET技巧人气:734

本文目的:使用sPRingBoot+springSecurity 用户授权验证权限功能,对用户的登录密码使用md5 加密。

本文基于我的博客:springboot+mybatis+SpringSecurity 实现用户角色数据库管理 进行修改。

本文只讲述对密码加密部分。只需要修改securityConfig 文件,并添加md5 工具类即可。


修改WebSecurityConfig.java

对于WebSecurityConfig.java 文件只需修改configure(AuthenticationManagerBuilder auth) 方法。

@Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.userDetailsService(customUserService()).passWordEncoder(new PasswordEncoder(){ @Override public String encode(CharSequence rawPassword) { return MD5Util.encode((String)rawPassword); } @Override public boolean matches(CharSequence rawPassword, String encodedPassword) { return encodedPassword.equals(MD5Util.encode((String)rawPassword)); }}); //user Details Service验证 }

添加MD5工具类

package com.us.example.util; /** * Created by yangyibo on 17/2/7. */ import java.security.MessageDigest; /** * MD5加密工具 * */ public class MD5Util { private static final String SALT = "tamboo"; public static String encode(String password) { password = password + SALT; MessageDigest md5 = null; try { md5 = MessageDigest.getInstance("MD5"); } catch (Exception e) { throw new RuntimeException(e); } char[] charArray = password.toCharArray(); byte[] byteArray = new byte[charArray.length]; for (int i = 0; i < charArray.length; i++) byteArray[i] = (byte) charArray[i]; byte[] md5Bytes = md5.digest(byteArray); StringBuffer hexValue = new StringBuffer(); for (int i = 0; i < md5Bytes.length; i++) { int val = ((int) md5Bytes[i]) & 0xff; if (val < 16) { hexValue.append("0"); } hexValue.append(Integer.toHexString(val)); } return hexValue.toString(); } public static void main(String[] args) { System.out.println(MD5Util.encode("abel")); } }

数据库

使用MD5 加密后,数据库中存储的密码应该是加密后的密码

这里写图片描述

本文完整代码:https://github.com/527515025/springBoot