Различная длина хешированного пароля с использованием 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, то хэши должны быть идентичны друг другу (учитывая, что параметры между ними одинаковы).

Другие вопросы по тегам