欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中bcrypt算法實(shí)現(xiàn)密碼加密的方法步驟

 更新時(shí)間:2023年08月29日 15:44:31   作者:曾幾何時(shí)…  
我們可以在Spring Boot和SSM中實(shí)現(xiàn)密碼加密,使用bcrypt算法可以保障密碼的安全性,并且減少了手動(dòng)編寫哈希函數(shù)的工作量,本文就來詳細(xì)的介紹一下,感興趣的可以了解一下

一、SpringBoot和SSM框架均可實(shí)現(xiàn)密碼加密的方法

在Spring Boot和SSM中實(shí)現(xiàn)密碼加密可以使用bcrypt算法。bcrypt是一種密碼哈希函數(shù),通過將密碼與隨機(jī)生成的鹽值進(jìn)行混合,然后再進(jìn)行多次迭代的計(jì)算,最終生成一個(gè)安全的哈希密碼。

下面是使用bcrypt算法實(shí)現(xiàn)密碼加密的步驟和代碼示例:

1.在pom.xml文件中添加Spring Security依賴

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

 2.創(chuàng)建一個(gè)配置類來配置Spring Security

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userDetailsService()).passwordEncoder(passwordEncoder());
    }
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
            .antMatchers("/admin/**").hasRole("ADMIN")
            .antMatchers("/user/**").hasAnyRole("USER", "ADMIN")
            .anyRequest().authenticated()
            .and()
            .formLogin().permitAll()
            .and()
            .logout().permitAll();
    }
    @Bean
    public BCryptPasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
    @Bean
    public UserDetailsService userDetailsService() {
        // 返回自定義的UserDetailsService實(shí)現(xiàn)類,用于從數(shù)據(jù)庫中獲取用戶信息
        return new UserDetailsServiceImpl();
    }
}

3.創(chuàng)建自定義的UserDetailsService實(shí)現(xiàn)類

實(shí)現(xiàn)UserDetailsService接口,用于從數(shù)據(jù)庫中獲取用戶信息。

@Service
public class UserDetailsServiceImpl implements UserDetailsService {
    @Autowired
    private UserMapper userMapper;
    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        User user = userMapper.findByUsername(username);
        if (user == null) {
            throw new UsernameNotFoundException("User not found");
        }
        return new org.springframework.security.core.userdetails.User(user.getUsername(), user.getPassword(), getAuthorities(user));
    }
    private Collection<GrantedAuthority> getAuthorities(User user) {
        List<String> roles = user.getRoles();
        List<GrantedAuthority> authorities = new ArrayList<>();
        for (String role : roles) {
            authorities.add(new SimpleGrantedAuthority(role));
        }
        return authorities;
    }
}

4.實(shí)現(xiàn)密碼加密

在注冊(cè)或更新密碼時(shí),使用BCryptPasswordEncoder類的encode()方法進(jìn)行密碼加密。

@Autowired
private BCryptPasswordEncoder passwordEncoder;
public void registerUser(User user) {
    // 加密密碼
    String encryptedPassword = passwordEncoder.encode(user.getPassword());
    user.setPassword(encryptedPassword);
    // 保存到數(shù)據(jù)庫
    userMapper.save(user);
}

總結(jié)

通過以上步驟,我們可以在Spring Boot和SSM中實(shí)現(xiàn)密碼加密。使用bcrypt算法可以保障密碼的安全性,并且減少了手動(dòng)編寫哈希函數(shù)的工作量。

到此這篇關(guān)于Java中bcrypt算法實(shí)現(xiàn)密碼加密的方法步驟的文章就介紹到這了,更多相關(guān)Java bcrypt密碼加密內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論