use pbkdf2 instead of my own implementation