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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我的 Spring Security 項目中的 BCrypt (Spring security)

我的 Spring Security 項目中的 BCrypt (Spring security)

白板的微信 2023-06-08 17:43:33
我該如何加密。這樣在數(shù)據(jù)庫中它就不會顯示用戶密碼。我現(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貢獻1817條經(jīng)驗 獲得超14個贊

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

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

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

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


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

TA貢獻1860條經(jīng)驗 獲得超9個贊

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

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

  • 取字符串“密碼”

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

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

  • 將鹽附加到加密密碼以供將來驗證用戶登錄時使用:“A3fcherf42d143d1w132dd23dsgrg5”

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

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

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

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

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

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

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

使用 Bcrypt 執(zhí)行此操作是一個簡單的過程,因為大部分工作都由庫處理。我解釋了上面的場景,以便您對幕后發(fā)生的事情有一個很好的理解。您執(zhí)行以下操作以生成并保存散列密碼。

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

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

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

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


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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