在python和java中使用argon2的不同长度的散列密码

时间:2018-01-16 09:50:31

标签: java python-3.x argon2-ffi

不确定它是否是正确的输出,但是当我在java中使用氩气哈希密码时,我得到输出:

$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应用程序。

1 个答案:

答案 0 :(得分: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实现指定了相同的符号,则哈希值应彼此相同(假设两者之间的参数相同)。