added PBKDF2 hashing implementation