TextBox текст и xor филтър

моят проблем днес в C#. Правя xor крипта за моите текстови редове и искам да направя генератор за нея, но моето TextBox с изходен текст връща диференциален низ и резултатът не е верен.

Функция Xor:

private string GetText(byte[] Text)
{
    byte[] Key = { 0x12, 0x05, 0x52 };
    // ----
    for (int i = 0; i < Text.Length; i++)
    {
        Text[i] ^= Key[i % 3];
    }
    // ----
    return Encoding.ASCII.GetString(Text);
}

Истински резултат:

string Text = ".\\MyExample.txt";
textBox2.Text = GetText(Encoding.ASCII.GetBytes(Text)); //Result: <Yk@*sh"~`|f}&

Грешен резултат:

string Text = textBox1.Text; //Text: ".\\MyExample.txt"
textBox2.Text = GetText(Encoding.ASCII.GetBytes(Text)); //Result: <Y_|jd?bi7<q*f

Защо получавам различни резултати и как се коригира?


person user3000633    schedule 18.01.2014    source източник


Отговори (2)


Вашият код съдържа екранирана обратна наклонена черта. C# преобразува \\ в единичен \:

string Text = ".\\MyExample.txt";  // Text == ".\MyExample.txt"

Ако искате текстът да съдържа \\, използвайте един от следните методи:

string Text = @".\\MyExample.txt";
string Text = ".\\\\MyExample.txt";
person Richard    schedule 18.01.2014

Текстът, който дефинирате в първата проба, не е същият като текста, идващ от TextBox.

string Text = ".\\MyExample.txt";
string TextBoxText = textBox1.Text; // is actually ".\\\\MyExample.txt"

\ е екраниращ знак, така че ако трябва да покажете ".\\MyExample.txt" във вашето текстово поле, ще видите .\MyExample.txt.

person Ed Chapel    schedule 18.01.2014