SpringSecurity对同一文字加密

SpringSecurity对同一文字加密每次得到的结果都不一样,随便将一个结果存入数据库,为什么能匹配成功?
加密代码:

 @Test
    public void test(){
        BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
        System.out.println(encoder.encode("123456"));
    }
//三次测试结果:
//$2a$10$52U5lML0Sg05RjfA.T7VxeEWOT7oHBoOWyNRtzuImh7BqqVW2PPhe
//$2a$10$.68sW52yi85RuOjsiLWJX.GH4FMUL52NOFT0sVBIZa9xkCEH.WbhG
//$2a$10$zbW2f6JA7wBbiA1adUXoXOB15gVu457Wus3Ujz/SSvkB5TIk0U8VO

我认为匹配规则是将我输入的明文加密,然后与数据库中的密文逐一比对,但是每次加密的密文都不同,为何还能匹配成功?

得到的hash码存储了随机盐,每次matches的时候先拿从hash码提取随机盐然后对匹配的目标使用相同的盐计算hash码看是否相同