byte[] bytes = Encoding.Unicode.GetBytes(pw + salt); SHA512Managed hashstring = new SHA512Managed(); byte[] hash = hashstring.ComputeHash(bytes); is the salt being hash too?