最新国产好看的视频,伊人天堂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ù)的工作量,本文就來詳細(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)文章

  • 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ǔ)不好遇到問題就無從下手,所以,打算寫Java的隨手筆記來鞏固基礎(chǔ),加強(qiáng)學(xué)習(xí),接下來講解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í)例,文中通過示例代碼介紹的非常詳細(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的庫,其更新速度非常快,導(dǎo)致網(wǎng)上許多教程在如今看來都已經(jīng)過時(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è)攔截器過程詳解

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

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

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

    停機(jī)簡(jiǎn)單的說,就是向應(yīng)用進(jìn)程發(fā)出停止指令之后,能保證正在執(zhí)行的業(yè)務(wù)操作不受影響,直到操作運(yùn)行完畢之后再停止服務(wù)。本文就來和大家聊聊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)論

昆明市| 吕梁市| 海林市| 孝义市| 鹤庆县| 繁昌县| 浦东新区| 平度市| 乳源| 岑巩县| 祥云县| 商都县| 平阳县| 盐山县| 鹤庆县| 定州市| 自贡市| 临海市| 泾阳县| 桂平市| 东乌珠穆沁旗| 湖州市| 兴安县| 奉化市| 竹山县| 论坛| 平远县| 高碑店市| 连州市| 科技| 嵊泗县| 上饶市| 龙里县| 赫章县| 富锦市| 贡山| 屯留县| 汽车| 庆阳市| 杭锦后旗| 高雄县|