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

how to generate encrypted passwords for use with Hipster

我想生成一系列 usernames/passwords 以与 JHipster 的 Spring 安全性一起使用。我的计划是将它们插入 src/main/resources/config/liquibase/users.csv,但我无法生成加密密码以进入此文件。

我希望能够做这样的事情:

def encoder = new BCryptPasswordEncoder()
println encoder.encode('admin')

但生成的字符串 ("$2a$10$icbkSBY4H/ub8pKAcnYhjeCit3A6e8JszUVZfu74sG6qqrSoT9CYW") 与默认 users.csv 文件中的已知值不匹配 ($2a$10$gSAhZrxMllrbgj/kkK9UceBPpChGWJA7SYIb1Mqo.n5aNLq1/oRrC).

有人可以解释一下我在这里遗漏了什么吗?

谢谢!

--约翰

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

进行比较

您的 a$icbkSBY4H/ub8pKAcnYhjeCit3A6e8JszUVZfu74sG6qqrSoT9CYW 包含:

  • icbkSBY4H/ub8pKAcnYhje 作为盐
  • IjZAgcfl7p92ldGxad68LJZdL17lhWy​ 作为散列

所以首先,即使对于相同的原始密码,每次都可以得到不同的加密密码。第二,不用手动比较,用PasswordEncoder.matches

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

另请参阅:https://en.wikipedia.org/wiki/Bcrypt