It seems it started a flamewar about sha1 and bcrypt.<p>First: scrypt (<a href="http://www.tarsnap.com/scrypt/" rel="nofollow">http://www.tarsnap.com/scrypt/</a>) is far better than bcrypt.<p>Second here is the general idea behind the scrypt algorithm (from the scrypt slides):<p>Algorithm ROMix:<p><pre><code> Given
a hash function H,
an input B (the user password),
and an integer parameter N (computational hardness),
compute:</code></pre>
 V_i =H^i(B) (0 <= i < N)
and X = H^N(B), then iterate<p><pre><code> j ← Integerify(X ) mod N
X ← H (X ⊕ Vj )
N times; and output X.
</code></pre>
The function Integerify can be any bijection from {0, 1}^k to {0...2^k −1}.<p>Theorem:<p>Under the random oracle model, the class of functions ROMix are sequential memory-hard.<p>More intuitively,<p><pre><code> V_0 = H(B)
V_1 = H(H(B))
...
X = V_N = H(H( ... H(B) ...) )
</code></pre>
V_i are filled with pseudo random values.<p>Then the algorithm access them in pseudo random order.<p>Which means that is is not only very long to compute but also need a lot of memory.<p>Now zealot should say _use scrypt_! not bcrypt. And also, even if cryptography is difficult, the idea behind is not so difficult.