1

不确定它是否是正确的输出,但是当我在 java 中使用 argon 对密码进行哈希处理时,我得到了输出:

$argon2i$v=19$m=512,t=2,p=2$J1w6n04CBSEA8p0cCqeK7A$tb1ihqduhONYZN0+ldKkw980Y7h7ZJ2OcDTsXyIMibo

而python给了我:

argon2$argon2i$v=19$m=512,t=2,p=2$TjZiM3ZTdGFIQUlZ$CocCpAIXQc722ndqkFZWxw

参数似乎相同:i, 512, 2, p =2

任何 argon2 大师可以告诉我如何获得相同长度的输出?更喜欢玩 java,因为它是一个简单的 ussd 应用程序。

4

1 回答 1

0

p=2字符串中的之后,有一个美元符号。这个美元符号和下一个美元符号之间的字符串是哈希的盐。在第二个美元符号之后是由Argon2派生的实际密钥。在 Java 示例中,(经过 base64 解码后),哈希长度为32. 但是,在 Python 中,哈希长度为16(Python 中的默认值)。所以,在 Python 中,如果你这样做了:

import argon2

argon2.hash_password(b"Password",memory_cost=512,time_cost=2,parallelism=2,hash_len=32)

然后,您将拥有与 Java 示例中相同的哈希长度。此外,如果您为 Python 和 Java 实现指定相同的盐,那么哈希应该彼此相同(假设两者之间的参数相同)。

于 2019-01-03T15:10:38.020 回答