use better pbkdf2