【发布时间】:2016-12-18 07:20:26
【问题描述】:
关于liferay中的密码加密我发现liferay正在使用 PBKDF2WithHmacSHA1/160/128000 算法默认使用 128,000 轮生成 160 位哈希。
我可以通过在我的 portal-ext.properties 文件中应用以下类型来使用它们
#passwords.encryption.algorithm=BCRYPT/10
#passwords.encryption.algorithm=MD2
#passwords.encryption.algorithm=MD5
#passwords.encryption.algorithm=NONE
#passwords.encryption.algorithm=PBKDF2WithHmacSHA1/160/128000
#passwords.encryption.algorithm=SHA
#passwords.encryption.algorithm=SHA-256
#passwords.encryption.algorithm=SHA-384
#passwords.encryption.algorithm=SSHA
#passwords.encryption.algorithm=UFC-CRYPT
默认类型为“PBKDF2WithHmacSHA1/160/128000”,我发现生成的每个密码都以前缀“AAAAoAAB9A”开头 喜欢:“AAAAoAAB9ACpjEM1K54bHX0UMY+3AgeAX3n50ZGERRK6MpxC”
我需要知道为什么在使用上述算法时每个密码都以这个前缀开头。
通过使用另一种算法“BCRYPT/10”,我发现我的密码以“$2a$10”开头,例如:“$2a$10$Xyx.o1kv1mIr8rtpr9sxwOP6AC9I/u7tAIlyfrzp8Vlqcek/CGdQ”
我如何计算出“$2a$10”中的“10”密码正在用 10 轮的盐进行哈希处理。这是正确的还是我弄错了?
【问题讨论】:
-
bcrypt 不使用线性轮数/迭代数,而是使用对数成本因子。此外,liferay 是开源的,因此您可以简单地查看源代码。
-
你是对的; bcrypt(以及基本上所有的 KDF)在运行之前需要知道参数,以便它们知道何时“停止”并进行比较。如果该值在您的系统中是恒定的,就像 pbkdf2 例程一样,您可以删除该信息并稍后将其修补回来,但何必呢?
-
@efxeekay 您在一篇文章中提出了多个问题。请将您的第二个问题提取到新帖子中 - 它可以帮助人们一次专注于一个问题。
-
@ArtjomB 调查 liferay 代码有帮助
标签: encryption encoding passwords liferay password-hash