public static void Main()
string mensagem = "10010110 11110111 01010110 00000001 00010111 00100110 01010111 00000001 " +
"00010111 01110110 01010111 00110110 11110111 11010111 01010111 00000011";
Console.WriteLine(Descriptografa(mensagem));
static string InverteOsDoisUltimosBits(string byteString)
string seisPrimeirosBits = byteString.Substring(0, 6);
string ultimosDoisInvertidos = byteString[6] == '0' ? "1" : "0";
ultimosDoisInvertidos += byteString[7] == '0' ? "1" : "0";
return seisPrimeirosBits + ultimosDoisInvertidos;
static string TrocaACadaQuatroBits(string byteString)
return byteString.Substring(4, 4) + byteString.Substring(0, 4);
static string BinarioParaTexto(string[] binario)
foreach (string letra in binario)
char caractere = (char)Convert.ToInt32(letra, 2);
static string Descriptografa(string mensagem)
string[] byteString = mensagem.Split(' ');
for (int i = 0; i < byteString.Length; i++)
byteString[i] = InverteOsDoisUltimosBits(byteString[i]);
byteString[i] = TrocaACadaQuatroBits(byteString[i]);
return BinarioParaTexto(byteString);