Шифрование XOR без использования оператора ^ - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Передо мной была поставлена задача написать алгоритм шифрования XOR без использования символа "^". Я остановился на этом
        private void button1_Click(object sender, EventArgs e)
        {
            bool z= true;
            string text1 = richTextBox1.Text;
            string key1 = richTextBox3.Text;
            while (z)
            {
                if (key1.Length<text1.Length)
                {
                    key1 += key1;
                }
                else
                {
                    key1 = key1.Substring(0, text1.Length);
                    z = false;
                }
            }
            string [] text = new string [text1.Length];
            for (int i = 0; i < text1.Length; i++)
            {
                text [i]= Convert.ToString(text1[i], 2);
            }
 
            string[] key = new string[key1.Length];
            for (int i = 0; i < key1.Length; i++)
            {
                key[i]= Convert.ToString(key1[i], 2);
            }
            richTextBox2.Text = text[0];
            string result = "";
            for (int i = 0; i < text.Length; i++)
            {
                string te = text[i];
                string ke = key[i];
                for (int g = 0; g < 7; g++)
                {
                    if (te[g] == '1' && ke[g] == '1' || te[g] == '0' && ke[g] == '0')
                    {
                        result += "0";
                    }
                    else
                    {
                        result += "1";
                    }
                }
                result += " ";
                
            }
           
        }
Здесь выполняется преобразование ключа и текста в двоичный код и создание новой последовательности двоичного кода. Как перевести полученный код обратно в буквы/цифры/символы? И как впоследствии дешифровать все это дело?

Решение задачи: «Шифрование XOR без использования оператора ^»

textual
Листинг программы
        byte Xor(byte a, byte b)
        {
            return (byte)((~a & b) | (a & ~b));
        }
 
        string XorStrings(string a, string b)
        {
            var aa = Encoding.ASCII.GetBytes(a);
            var ba = Encoding.ASCII.GetBytes(b);
            var ca = new byte[a.Length];
            for (int i = 0; i < a.Length; i++)
                ca[i] = Xor(aa[i], ba[i]);
            return Encoding.ASCII.GetString(ca);
        }
 
        string cat = "cat";
        string dog = "dog";
 
        string result = XorStrings(cat, dog);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.111 из 5
Похожие ответы