了解Liferay密码加密

时间:2016-08-11 13:49:35

标签: encryption encoding passwords liferay password-hash

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

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

将000000a0从十六进制编码为十进制,则密钥大小为160。

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

a98c4335 2b9e1b1d是你的盐。

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