最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

在Spring Boot和SSM中實(shí)現(xiàn)密碼加密可以使用bcrypt算法。bcrypt是一種密碼哈希函數(shù),通過(guò)將密碼與隨機(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è)配置類來(lái)配置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ù)庫(kù)中獲取用戶信息
        return new UserDetailsServiceImpl();
    }
}

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

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

@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ù)庫(kù)
    userMapper.save(user);
}

總結(jié)

通過(guò)以上步驟,我們可以在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)文章

  • Spring?Boot?利用注解方式整合?MyBatis

    Spring?Boot?利用注解方式整合?MyBatis

    這篇文章主要介紹了Spring?Boot?利用注解方式整合?MyBatis,文章圍繞主主題的相關(guān)資料展開詳細(xì)的內(nèi)容介紹,需要的小伙伴可以參考一下
    2022-05-05
  • java 學(xué)習(xí)筆記(入門篇)_java的安裝與配置

    java 學(xué)習(xí)筆記(入門篇)_java的安裝與配置

    學(xué)習(xí)Java已經(jīng)很長(zhǎng)時(shí)間了,由于基礎(chǔ)不好遇到問(wèn)題就無(wú)從下手,所以,打算寫Java的隨手筆記來(lái)鞏固基礎(chǔ),加強(qiáng)學(xué)習(xí),接下來(lái)講解java的安裝,配置等,感興趣的朋友可以參考下
    2013-01-01
  • spring中12種@Transactional的失效場(chǎng)景(小結(jié))

    spring中12種@Transactional的失效場(chǎng)景(小結(jié))

    日常我們進(jìn)行業(yè)務(wù)開發(fā)時(shí),基本上使用的都是聲明式事務(wù),即為使用@Transactional注解的方式,本文主要介紹了spring中12種@Transactional的失效場(chǎng)景,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Java CPU性能分析工具代碼實(shí)例

    Java CPU性能分析工具代碼實(shí)例

    這篇文章主要介紹了Java CPU性能分析工具代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Java?21使用JJWT?0.13.0的最新正確用法示例

    Java?21使用JJWT?0.13.0的最新正確用法示例

    JJWT(Java JWT)是Java平臺(tái)上相當(dāng)流行的用于生成Json Web Token的庫(kù),其更新速度非常快,導(dǎo)致網(wǎng)上許多教程在如今看來(lái)都已經(jīng)過(guò)時(shí),這篇文章主要介紹了Java?21使用JJWT?0.13.0的最新正確用法,需要的朋友可以參考下
    2026-04-04
  • Java服務(wù)端性能優(yōu)化之JVM垃圾回收策略詳解

    Java服務(wù)端性能優(yōu)化之JVM垃圾回收策略詳解

    JVM垃圾回收策略涵蓋了基本原理、常見策略(如SerialGC、ParallelGC、CMS、G1GC)以及優(yōu)化建議,選擇合適的策略和調(diào)整參數(shù),如堆大小和GC日志,可以提高應(yīng)用性能和響應(yīng)速度,持續(xù)監(jiān)控和分析是關(guān)鍵步驟
    2025-03-03
  • spring boot 注冊(cè)攔截器過(guò)程詳解

    spring boot 注冊(cè)攔截器過(guò)程詳解

    這篇文章主要介紹了spring boot中注冊(cè)攔截器過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • 一文帶你了解SpringBoot的停機(jī)方式

    一文帶你了解SpringBoot的停機(jī)方式

    停機(jī)簡(jiǎn)單的說(shuō),就是向應(yīng)用進(jìn)程發(fā)出停止指令之后,能保證正在執(zhí)行的業(yè)務(wù)操作不受影響,直到操作運(yùn)行完畢之后再停止服務(wù)。本文就來(lái)和大家聊聊Springboot的停機(jī)方式與停機(jī)處理
    2023-02-02
  • hibernate一對(duì)多關(guān)聯(lián)映射學(xué)習(xí)小結(jié)

    hibernate一對(duì)多關(guān)聯(lián)映射學(xué)習(xí)小結(jié)

    這篇文章主要介紹了hibernate一對(duì)多關(guān)聯(lián)映射學(xué)習(xí)小結(jié),需要的朋友可以參考下
    2017-09-09
  • java設(shè)計(jì)模式-裝飾者模式詳解

    java設(shè)計(jì)模式-裝飾者模式詳解

    這篇文章主要介紹了Java設(shè)計(jì)模式之裝飾者模式詳解和代碼實(shí)例,Decorator模式(別名Wrapper):動(dòng)態(tài)將職責(zé)附加到對(duì)象上,若要擴(kuò)展功能,裝飾者提供了比繼承更具彈性的代替方案,需要的朋友可以參考下
    2021-07-07

最新評(píng)論

义马市| 独山县| 大连市| 大安市| 普兰县| 阿拉尔市| 南开区| 敦化市| 枝江市| 章丘市| 五华县| 崇礼县| 大洼县| 稷山县| 潞城市| 玛沁县| 衡山县| 天水市| 昆明市| 余干县| 司法| 西青区| 甘孜县| 琼海市| 乌审旗| 油尖旺区| 麦盖提县| 乌拉特后旗| 阿巴嘎旗| 东阳市| 甘肃省| 宁阳县| 凤庆县| 永吉县| 上林县| 苗栗县| 卓尼县| 隆林| 军事| 九龙坡区| 米脂县|