Actually, it's essentially PBKDF1, but that's close enough for non-cryptographers.
Here's a version that's much easier to read than the spec:
https://github.com/emerose/pbkdf2-ruby/blob/master/lib/pbkdf...
I should stop saying PBKDF2 and just go back to saying PBKDF.