Spring security 如何生成用于Hipster的加密密码

Spring security 如何生成用于Hipster的加密密码,spring-security,jhipster,Spring Security,Jhipster,我想生成一系列用户名/密码,用于JHipster的Spring Security。我的计划是将它们插入src/main/resources/config/liquibase/users.csv,但是我在生成进入该文件的加密密码时遇到了问题 我希望能够做到这样: def encoder = new BCryptPasswordEncoder() println encoder.encode('admin') 但生成的字符串($2a$10$icbkSBY4H/ub8pkacnyhjecit3a6e

我想生成一系列用户名/密码,用于JHipster的Spring Security。我的计划是将它们插入src/main/resources/config/liquibase/users.csv,但是我在生成进入该文件的加密密码时遇到了问题

我希望能够做到这样:

def encoder = new BCryptPasswordEncoder()
println encoder.encode('admin')
但生成的字符串($2a$10$icbkSBY4H/ub8pkacnyhjecit3a6e8jszuvzfu74sg6qqqrsot9cyw)与默认users.csv文件中的已知值($2a$10$gsahzrxmlrlbgj/kkkk9ucebpppchgwja7syib1mqo.n5aNLq1/oRrC)不匹配

有人能解释一下我遗漏了什么吗

谢谢


--约翰

没关系。BCrypt每次都会生成一个新的哈希,因为这个字符串的一部分是随机的salt。Bcrypt编码器可以比较这些散列,因为它知道从哪里获取salt和实际散列,所以它可以使用此salt加密密码,并将结果与实际散列进行比较

您的
$2a$10$icbkSBY4H/ub8pkacnyhjecit3a6e8jszuvzfu74sg6qqqrsot9cyw
包含:

  • icbkSBY4H/ub8pKAcnYhje
    as salt
  • IjZAgcfl7p92ldGxad68LJZdL17lhWy​作为散列
所以首先,每次都可以得到不同的加密密码,即使是相同的原始密码。其次,您不需要手动比较,使用
PasswordEncoder.matches

您也可以使用任何在线BCrypt密码编码器,而不是为此编写代码。有很多

另见: