BCrypt


BCryptは一方向暗号化です.
Spring Bootでは、主にBCryptと書かれたPasswordEncoderを使用しています.
    @Bean
    public PasswordEncoder passwordEncoder(){
        return new BCryptPasswordEncoder();
    }
    
    @Autowired
    PasswordEncoder passwordEncoder;
    
    String encrypted = passwordEncoder.encode(rawPassword);
    Boolean isSuccess = passwordEncoder.matches(rawPassword, encrypted);
    log.info("Encrypted String is {}", encrypted);
    
    
    $2a$10$3H3bk6hpbA8sUbrkGu8/JesQqyLXq4FgGq003CUQmvzBTbfEz0KLu    
以上のように、多くの作業が行われます.
あまり気を使わずに書いていたら、急にそう思った.
Saltはどこですか?
検索結果は、毎回異なるSaltが使用されていることを示します.
だから私はSaltにどこにいるか聞いた.
Spring SecurityのCryptPasswordEncoderを次のように取り外します.

スプリングの中で普通?デフォルト?強度は10で、BRCryptバージョンでは主に2 aが使用されています.
実はスプリングだけでなく、基本的には10回も散らばっています.(まだ?)
encodeメソッド内でgensaltを見つけることができます.
ではgensaltは?

Encode base 64はsaltをbase 64に変換することである.
要するに,符号化を行う過程で,毎回saltがランダムに生成されることが分かる.
saltはbase 64として符号化され、暗号化文字列の前に貼り付けられ、保存される.
$2a$10$salt...
コメント.ハッシュ値をsaltの後ろに再貼り付けて格納します.
そんなに難しい概念ではありませんが、あまりにも無知です.
まだ完璧ではないようですが:(