У меня проблема с вычислением одного и того же дайджеста скрипта между RbNaCl и реализация Go.
Вот как я генерирую ключ с помощью rbnacl:
opslimit = 2**20
memlimit = 2**24
digest_size = 32
digest = RbNaCl::PasswordHash.scrypt(
password,
salt,
opslimit,
memlimit,
digest_size
)
Значения параметров opslimit и memlimit были найдены на странице документация.
Вот моя попытка воспроизвести те же результаты с Go:
N := 32768
r := 8
p := 1
keyLength := 32
secretKeyBytes, _ := scrypt.Key(password, salt, N, r, p, keyLength)
Значения для N, r, p и keyLength получены из документация.
пароль и соль имеют одинаковые значения.
Я не криптограф, но, насколько я понимаю, должны быть одинаковые значения коэффициента стоимости, чтобы получить один и тот же дайджест? Проблема здесь в том, что, поскольку обе реализации принимают разное количество параметров, мне тоже сложно найти правильную комбинацию. Любые идеи о том, как совместить факторы стоимости между этими двумя реализациями, чтобы я мог вычислять одинаковые хэши scrypt между двумя языками программирования?