fix our implementation of pbkdf2 to produce meaningful, if still incorrect, output