Ваш текущий код не использует либо ASCIIEncoding
или UTF8Encoding
... он использует кодировку по умолчанию в системе, поскольку он эквивалентен просто Encoding.Default
, Доступ к этому статическому свойству через два подкласса не имеет значения.
Чтобы использовать ASCII или UTF-8, используйте Encoding.ASCII
или Encoding.UTF8
.
Теперь, что касается чувствительности к регистру ... нет, дело не в кодировках. Ваш вопрос довольно запутанный, поскольку он утверждает, что означает , что дает вам одинаковый результат для "abc" и "ABC", в чем я серьезно сомневаюсь. Я предполагаю, что вы имеете в виду, что вы хотите , чтобы получить тот же результат, но в настоящее время это не так.
Я предлагаю вам использовать что-то вроде этого, если вы хотите нечувствительность к регистру:
string lower = string.ToLowerInvariant();
byte[] data = Encoding.UTF8.GetBytes(lower);
byte[] hash = md5.ComputeHash(encodedBytes);
return BitConverter.ToString(hash);
Обратите внимание, что это дает нечувствительность к регистру нечувствительным к культуре способом ... который может быть не идеальным во всех случаях, но по крайней мере непротиворечивым независимо от используемой культуры.