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