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

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

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

Здравствуйте. Передо мной была поставлена задача написать алгоритм шифрования XOR без использования символа "^". Я остановился на этом
Листинг программы
  1. private void button1_Click(object sender, EventArgs e)
  2. {
  3. bool z= true;
  4. string text1 = richTextBox1.Text;
  5. string key1 = richTextBox3.Text;
  6. while (z)
  7. {
  8. if (key1.Length<text1.Length)
  9. {
  10. key1 += key1;
  11. }
  12. else
  13. {
  14. key1 = key1.Substring(0, text1.Length);
  15. z = false;
  16. }
  17. }
  18. string [] text = new string [text1.Length];
  19. for (int i = 0; i < text1.Length; i++)
  20. {
  21. text [i]= Convert.ToString(text1[i], 2);
  22. }
  23. string[] key = new string[key1.Length];
  24. for (int i = 0; i < key1.Length; i++)
  25. {
  26. key[i]= Convert.ToString(key1[i], 2);
  27. }
  28. richTextBox2.Text = text[0];
  29. string result = "";
  30. for (int i = 0; i < text.Length; i++)
  31. {
  32. string te = text[i];
  33. string ke = key[i];
  34. for (int g = 0; g < 7; g++)
  35. {
  36. if (te[g] == '1' && ke[g] == '1' || te[g] == '0' && ke[g] == '0')
  37. {
  38. result += "0";
  39. }
  40. else
  41. {
  42. result += "1";
  43. }
  44. }
  45. result += " ";
  46. }
  47. }
Здесь выполняется преобразование ключа и текста в двоичный код и создание новой последовательности двоичного кода. Как перевести полученный код обратно в буквы/цифры/символы? И как впоследствии дешифровать все это дело?

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

textual
Листинг программы
  1.         byte Xor(byte a, byte b)
  2.         {
  3.             return (byte)((~a & b) | (a & ~b));
  4.         }
  5.  
  6.         string XorStrings(string a, string b)
  7.         {
  8.             var aa = Encoding.ASCII.GetBytes(a);
  9.             var ba = Encoding.ASCII.GetBytes(b);
  10.             var ca = new byte[a.Length];
  11.             for (int i = 0; i < a.Length; i++)
  12.                 ca[i] = Xor(aa[i], ba[i]);
  13.             return Encoding.ASCII.GetString(ca);
  14.         }
  15.  
  16.         string cat = "cat";
  17.         string dog = "dog";
  18.  
  19.         string result = XorStrings(cat, dog);

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


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

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

9   голосов , оценка 4.111 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы