第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

我的 Spring Security 項(xiàng)目中的 BCrypt (Spring security)

我的 Spring Security 項(xiàng)目中的 BCrypt (Spring security)

白板的微信 2023-06-08 17:43:33
我該如何加密。這樣在數(shù)據(jù)庫中它就不會(huì)顯示用戶密碼。我現(xiàn)在保存在數(shù)據(jù)庫中 - 登錄名和密碼,用戶角色。我需要密碼必須在數(shù)據(jù)庫中加密(BCrypt)@Configuration@EnableWebSecuritypublic class SecurityConfig extends WebSecurityConfigurerAdapter {    @Override    protected void configure(HttpSecurity http) throws Exception {        http.authorizeRequests()                .antMatchers("/admin/**").hasRole("ADMIN")                .antMatchers("/user/**").hasRole("USER")                .antMatchers("/**").permitAll()                .and()                .formLogin()                .loginPage("/login")                .defaultSuccessUrl("/allStudents")                .and()                .logout()                .and()                .csrf().disable();    }    @Bean    public PasswordEncoder weDoNotWantEncryption() {        return new PasswordEncoder() {            @Override            public String encode(CharSequence rawPassword) {                return rawPassword.toString();            }            @Override            public boolean matches(CharSequence rawPassword, String encodedPassword) {                return rawPassword.toString().equals(encodedPassword);            }        };    }}
查看完整描述

2 回答

?
大話西游666

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超14個(gè)贊

非常簡(jiǎn)單 - 只需將您的weDoNotWantEncryption()函數(shù)替換為返回 BCrypt 實(shí)例的函數(shù):

@Bean
public PasswordEncoder passwordEncoder() { 
   return new BCryptPasswordEncoder();
}

BCryptPasswordEncoder實(shí)現(xiàn)PasswordEncoder(顧名思義),因此已經(jīng)為encode()和定義了好的方法matches()。

請(qǐng)注意,這將(當(dāng)然)使當(dāng)前在您的數(shù)據(jù)庫中的任何密碼都無法使用,盡管鑒于這些密碼以明文形式存儲(chǔ),我假設(shè)(并希望/祈禱)這是在測(cè)試環(huán)境中,而不是在生產(chǎn)環(huán)境中。


查看完整回答
反對(duì) 回復(fù) 2023-06-08
?
慕碼人2483693

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個(gè)贊

當(dāng)我們加密存儲(chǔ)密碼時(shí),我們通常對(duì)它們進(jìn)行哈希處理,以便它是一種單向加密,即即使我們知道哈希算法,我們也無法從加密的密碼中檢索到原始密碼。

我們遵循的主要程序如下。

  • 取字符串“密碼”

  • 向密碼添加鹽(一個(gè)隨機(jī)字符串,以確保具有相同密碼的多個(gè)用戶沒有相同的散列密碼):隨機(jī)鹽:“A3fcherf42”,生成的字符串:“A3fcherf42password”

  • 使用加密算法散列此字符串,您可能會(huì)得到:“d143d1w132dd23dsgrg5”

  • 將鹽附加到加密密碼以供將來驗(yàn)證用戶登錄時(shí)使用:“A3fcherf42d143d1w132dd23dsgrg5”

  • 用用戶id保存在數(shù)據(jù)庫中

現(xiàn)在驗(yàn)證用戶登錄:

  • 從登錄表單中獲取密碼,即“密碼”

  • 讀取存儲(chǔ)在數(shù)據(jù)庫中的哈希值:“A3fcherf42d143d1w132dd23dsgrg5”

  • 從存儲(chǔ)的散列密碼中提取鹽:“A3fcherf42”

  • 將鹽附加到用戶輸入的密碼:“A3fcherf42password”

  • 哈希密碼,現(xiàn)在生成的哈希值應(yīng)該與存儲(chǔ)在數(shù)據(jù)庫中的哈希值匹配。

使用 Bcrypt 執(zhí)行此操作是一個(gè)簡(jiǎn)單的過程,因?yàn)榇蟛糠止ぷ鞫加蓭焯幚?。我解釋了上面的?chǎng)景,以便您對(duì)幕后發(fā)生的事情有一個(gè)很好的理解。您執(zhí)行以下操作以生成并保存散列密碼。

String?pw_hash?=?BCrypt.hashpw(plain_password,?BCrypt.gensalt());

現(xiàn)在您有了散列字符串,將其存儲(chǔ)到數(shù)據(jù)庫中。

當(dāng)用戶登錄時(shí),您獲取他輸入的密碼、數(shù)據(jù)庫存儲(chǔ)的哈希字符串,并對(duì)其進(jìn)行驗(yàn)證。

if?(BCrypt.checkpw(entered_pw,?stored_hash))
????return?True;


查看完整回答
反對(duì) 回復(fù) 2023-06-08
  • 2 回答
  • 0 關(guān)注
  • 171 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)