Como obter uma representação uniforme de bytes de uma string em C# sem especificar manualmente a codificação?
Olá a todos! Sou novo em C# e me deparei com um problema que me deixou confuso. Preciso transmitir strings pela rede e fazer hash delas, mas notei que quando converto uma string em um array de bytes, o resultado pode ser diferente em computadores distintos.
Aqui está um exemplo do meu código:
string message = "Привет, мир!";
byte[] bytes = Encoding.Default.GetBytes(message);
// Envio bytes pela rede ou calculo o hash
O problema é que Encoding.Default dá resultados diferentes dependendo da localidade do sistema. No meu Windows com localidade russa funciona, mas no servidor com localidade inglesa, não. Li que Encoding.ASCII perde caracteres, e Encoding.Unicode adiciona BOM (Byte Order Mark), que estraga tudo.
Preciso de uma solução que funcione da mesma forma em qualquer plataforma (Windows, Linux, Mac) e que não exija que eu especifique manualmente a codificação toda vez. Como converter corretamente uma string em bytes em C# sem isso?