Расшифровка пароля с использованием алгоритма XOR в C #. Программа не работает по неизвестной причине - PullRequest
1 голос
/ 04 октября 2019

Функция состоит в том, что он принимает заданный пароль и ключ для его раскрытия. После этого он использует алгоритм XOR для расшифровки пароля в шифр. Шифр наконец распечатывается пользователю.

Но это ничего не печатает. Я обнаружил, что если я ввожу цифры, а не буквы в пароле или ключе, он печатает все символы в их представлениях int

Console.Write("INPOUT YOUR PASSWORD: ");
string password = Console.ReadLine();

Console.WriteLine("INPUT YOUR KEY TO HIDE YOUR PASSWORD WITH: ");
string key = Console.ReadLine();

char[] passwordChar = password.ToCharArray();
char[] keyChar = key.ToCharArray();
int countForKey = 0;

StringBuilder cypher = new StringBuilder(passwordChar.Length);

for(int i = 0; i < passwordChar.Length; i++)
{
    char temp = (char)(passwordChar[i] ^ keyChar[countForKey]); //Doesnt work

    cypher.Append(temp);

    countForKey++;

    if(countForKey == key.Length)
    {
        countForKey = 0;
    }
}

Console.WriteLine("The password cypher is: {0}", cypher);

1 Ответ

2 голосов
/ 04 октября 2019

Причина, по которой вы получаете неожиданный вывод, заключается в том, что когда вы XOR некоторых символов, результат не будет печататься.

Например, рассмотрим XORing 'W' и 'A':

  Char code
W 0101-0111
A 0100-0001
  ---------
  0001-0110

Результирующий код символа 00010110 - это «SYN» (синхронный режим ожидания), который НЕ является печатаемым символом и приведет к выводу либо пустого символа, либо символа коробки (не уверен, какой именно).

Другой пример:

  Char code
X 0101 1000
a 0110 0001
  ---------
9 0011 1001

В этом случае XORing X и a приводит к 9.

...