Цитата(jojo @ Dec 1 2017, 01:05)

Первый проход
intermediate[0] = SHA512(salt+password)
intermediate[n] = SHA512(intermediate[n-1])
Второй проход
= SHA512(intermediate[SHA512(intermediate[0]&ff.ff])&ff.ff]) n раз
Примеры scrypt, cryptonight и, конечно, Ethereum.
В обоих случаях оптимизации, если мы делаем просто несколько оборотов (как в PBKDF2) мы используем лишь 64*2 байта памяти, чего я стараюсь намеренно избежать.
Чем больше памяти использует KDF - тем хуже для запихивания ее перебора в FPGA/GPU и распараллеливания.