Encryption 了解Liferay密码加密

Encryption 了解Liferay密码加密,encryption,encoding,passwords,liferay,password-hash,Encryption,Encoding,Passwords,Liferay,Password Hash,关于liferay中的密码加密,我发现liferay正在使用 默认情况下,PBKDF2WithHmacSHA1/160/128000算法生成160位哈希,使用128000轮 通过在我的portal-ext.properties文件中应用它们,我可以使用以下类型 #passwords.encryption.algorithm=BCRYPT/10 #passwords.encryption.algorithm=MD2 #passwords.encryption.algorithm=MD5 #pass

关于liferay中的密码加密,我发现liferay正在使用 默认情况下,PBKDF2WithHmacSHA1/160/128000算法生成160位哈希,使用128000轮

通过在我的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”时,我发现生成的每个密码都以前缀“aaaaab9a”开头 比如:“aaaaab9acpjem1k54bhx0umy+3ageax3an50zgerrk6mpxc”

我需要知道为什么在使用上述算法时每个密码都以这个前缀开头

通过使用另一种算法“BCRYPT/10”我发现我的密码以“$2a$10”开头,比如:“$2a$10$Xyx.o1kv1kv1mir8rtpr9sxwop6ac9i/u7tAIlyfrzp8Vlqcek/CGdQ”


我是如何计算出“$2a$10”中的“10”密码在10轮中被盐哈希的。这是正确的还是我弄错了?

Liferay使用带HMACSHA1/160/128000的PBKDF2默认情况下,加密密码是由字节组合而成的“密钥大小、轮数、salt和秘钥字节”按顺序放置在bytebuffer中,然后对组合进行Base64编码

因此,“aaaaab9acpjem1k54bhx0umy+3AgeAX3n50ZGERRK6MpxC”中有前缀“aaaaaaab9a”的原因是,这是密钥大小和循环数(即160/128000)字节缓冲区的组合,字节缓冲区作为一个整体编码到Base64中。更改密钥大小和轮数时,您将得到一些不同的前缀。

让我们以您的示例:“aaaaab9acpjem1k54bhx0umy+3ageax3an50zgerrk6mpxc”

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

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

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

a98c4335 2b9e1b1d是您的食盐


7d14318f b7020780 5f79f9d1 91844512 ba329c42是散列密码。

bcrypt不使用线性轮数/迭代次数,而是使用对数成本系数。此外,liferay是开源的,因此您只需查看源代码即可;bcrypt(基本上所有kdf)在运行之前都需要知道参数,以便它们知道何时“停止”并进行比较。如果这个值在你的系统中是恒定的,就像pbkdf2例程一样,你可以去掉这些信息,稍后再补回来,但是为什么要麻烦呢?@efxeekay你在一篇文章中问了不止一个问题。请将您的第二个问题摘录到一篇新帖子中,这有助于人们一次只关注一个问题。@ArtjomB查看liferay代码有帮助