Шифрование 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);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д