了解Liferay密码加密

问题描述 投票:1回答:2

关于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轮的盐进行哈希处理。这是正确的还是我弄错了?

encryption encoding passwords liferay password-hash
2个回答
1
投票

Liferay默认使用PBKDF2WithHmacSHA1 / 160/128000,加密密码是在字节缓冲区中按顺序放置的“密钥大小,轮数,盐和密钥字节”的字节组合,然后是组合上的Base64编码。

因此,在“AAAAoAAB9ACpjEM1K54bHX0UMY + 3AgeAX3n50ZGERRK6MpxC”中存在前缀“AAAAoAAB9A”的原因是因为这是密钥大小和轮数(即160/128000)字节缓冲区的组合,其被整体编码到Base64中。更改密钥大小和轮次数,您将使用一些不同的前缀。


1
投票

让我们举个例子:“AAAAoAAB9ACpjEM1K54bHX0UMY + 3AgeAX3n50ZGERRK6MpxC”

将它从base64编码为十六进制:“000000a0 0001f400 a98c4335 2b9e1b1d 7d14318f b7020780 5f79f9d1 91844512 ba329c42”

将000000a0从十六进制编码为十进制,就像密钥大小一样得到160。

将0001f400从十六进制编码为十进制,就像迭代一样得到128000。

a98c4335 2b9e1b1d是你的盐。

7d14318f b7020780 5f79f9d1 91844512 ba329c42是哈希密码。

© www.soinside.com 2019 - 2024. All rights reserved.