private static string GetHashedString(string unhashedString, SHA256CryptoServiceProvider hashProvider)
            {
                // The point of hashing here is to obscure customer data.  
                // So, if we get any empty values (noone knows why this happens for certain... has only been observed in dumps)
                // an empty string is fine.  It will appear as an extra semicolon in the MD value.
                if (string.IsNullOrEmpty(unhashedString))
                {
                    return string.Empty;
                }

                if (TelemetryHelper.DefaultTelemetrySession.CanCollectPrivateInformation())
                {
                    return unhashedString;
                }

                byte[] theHash = hashProvider.ComputeHash(Encoding.UTF8.GetBytes(unhashedString));
                StringBuilder sb = new StringBuilder(theHash.Length);
                for (int i = 0; i < theHash.Length; i++)
                {
                    sb.AppendFormat("{0:X}", theHash[i]);
                }

                return sb.ToString();
            }