An implementation of the PBKDF2 key derivation function