Шифрование 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);