springboot实现注册加密与登录解密功能(demo)

  1. 确认需求

在实现注册加密与登录解密功能之前,我们需要先确认需求。

我们需要一个使用SpringBoot实现的用户注册功能,并将用户的密码进行加密存储。同时,我们需要实现用户登录功能,并对用户输入的密码进行解密。

  1. 密码加密与解密

为了保证用户密码的安全性,我们需要将用户密码进行加密存储。常见的加密方式有MD5、SHA-1、SHA-256等。

下面是以MD5为例的密码加密示例代码:

public class MD5Util {
    private static final String SALT = "demo";//加盐
    /**
     * MD5加密
     * @param password 待加密密码
     * @return 加密后字符串
     */
    public static String md5(String password) {
        try {
            MessageDigest messageDigest = MessageDigest.getInstance("MD5");
            messageDigest.update(SALT.getBytes());
            byte[] result = messageDigest.digest(password.getBytes());
            return byteArrayToHex(result);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
    /**
     * 获取十六进制字符串
     * @param byteArray 字节数组
     * @return 字符串
     */
    public static String byteArrayToHex(byte[] byteArray) {
        StringBuilder hs = new StringBuilder();
        String stmp;
        for (byte b : byteArray) {
            stmp = Integer.toHexString(b & 0XFF);
            if (stmp.length() == 1) {
                hs.append("0").append(stmp);
            } else {
                hs.append(stmp);
            }
        }
        return hs.toString();
    }
}

用户登录时,我们需要对用户输入的密码进行解密。下面是解密用户密码的示例代码:

public static String md5(String password) {
    try {
        MessageDigest messageDigest = MessageDigest.getInstance("MD5");
        messageDigest.update(SALT.getBytes());
        byte[] result = messageDigest.digest(password.getBytes());
        return byteArrayToHex(result);
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
}
  1. 注册用户

在注册用户时,我们需要对用户密码进行加密存储。下面是一个使用Spring Data JPA实现用户注册功能的示例代码:

@RestController
@RequestMapping("/register")
public class UserController {

    @Autowired
    private UserRepository userRepository;
    /**
     * 用户注册
     * @param user 注册用户信息
     * @return 注册结果
     */
    @PostMapping("/user")
    public ResponseEntity<String> register(@RequestBody User user) {
        user.setPassword(MD5Util.md5(user.getPassword()));
        userRepository.save(user);
        return ResponseEntity.ok("注册成功");
    }
}
  1. 用户登录

在用户登录时,我们需要对用户输入的密码进行解密。下面是一个使用Spring Security实现用户登录验证的示例代码:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private UserService userService;
    /**
     * 设置认证方式(使用自定义认证服务)
     */
    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userService).passwordEncoder(passwordEncoder());
    }
    /**
     * 设置密码加密方式
     */
    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
    /**
     * 设置授权过滤器
     */
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().antMatchers("/login").permitAll()
                .antMatchers("/register").permitAll()
                .anyRequest().authenticated()
                .and().formLogin().loginPage("/login")
                .defaultSuccessUrl("/").permitAll()
                .and().logout().permitAll();
    }
}

在以上示例代码中,我们使用Spring Security实现了用户登录验证,并使用BCryptPasswordEncoder对用户密码进行加密。同时,我们定义了几个URL的访问规则,/login和/register允许所有用户访问,其他URL需要进行登录验证才能访问。

  1. 总结

通过上述步骤,我们成功实现了SpringBoot实现注册加密与登录解密功能(demo)。其中涉及到MD5加密算法、Spring Data JPA、Spring Security、BCryptPasswordEncoder等知识点,通过本篇攻略的学习,相信大家可以掌握这些知识点的相关使用。

阅读剩余 64%

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot实现注册加密与登录解密功能(demo) - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日
合作推广
合作推广
分享本页
返回顶部