added pbkdf2 hashing