Различная длина хешированного пароля с использованием argon2 в Python и Java
Не уверен, что это правильный вывод, но когда я хэширую пароль с аргоном в Java, я получаю вывод:
$argon2i$v=19$m=512,t=2,p=2$J1w6n04CBSEA8p0cCqeK7A$tb1ihqduhONYZN0+ldKkw980Y7h7ZJ2OcDTsXyIMibo
в то время как питон дает мне:
argon2$argon2i$v=19$m=512,t=2,p=2$TjZiM3ZTdGFIQUlZ$CocCpAIXQc722ndqkFZWxw
параметры кажутся одинаковыми: i, 512, 2, p =2
Любой гуру argon2, который может сказать мне, как я могу получить ту же длину вывода? Предпочитаю играть с Java, так как это простое приложение ussd.
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, то хэши должны быть идентичны друг другу (учитывая, что параметры между ними одинаковы).