在我的 Linux 机器上,我可以使用 htpassword 从命令行生成 bcrypt 哈希
htpasswd -bnBC 10 "" password | tr -d ':\n'
然而它生成“$2y$”,但我需要“$2a$”(bcrypt 2a)。我怎样才能实现它?
答案1
您没有提到您的用例,但一般来说,如果它是现代 htpasswd 实现,它会生成 $2a$ 兼容的哈希(空终止,UTF-8 编码),即使它使用 $2y$ 来标记变体。
换句话说,您可以将 2y 替换为 2a,并且它应该可以工作。
这个 StackOverflow 答案更详细地说:
2a、2x、2y 和 2b 之间没有区别。如果您正确编写了实现,它们都会输出相同的结果。
所有前现代变体都源于有缺陷的实现 - 无论是在 OpenBSD 中,还是在 PHP 的crypt_blowfish
.如果您使用任何现代平台,哈希格式现在应该是可以互换的。
如果您确实需要生成一个前现代(有缺陷的)哈希,那么您必须找到修复该缺陷之前的实现。