Scrypt — parallelizing-resistant key-derivation function
Scrypt uses a very big vector of pseudorandom bit strings. Straightforward implementation generates vector once and uses it to generate keys. To efficiently parallelize computation, one must spend a lot of memory or compute elements on the fly. The trick is that the whole vector itself is very expensive to compute, which makes it more generally efficient to perform computations on a single CPU using a single vector.
