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(); }