Архив задач

Протокол

Алексею необходимо передать Виктории пятисимвольный пароль к учетной записи на сайте. Для того, чтобы пароль не был перехвачен, Виктория предлагает использовать следующий способ:

1.  Алексей преобразует пароль (параметр psw) с помощью приведенной ниже функции, используя при этом известный только ему ключ (параметр key). Полученную строку отправляет Виктории.

 

char * E(char psw[5], char key[5])

{

char *res = new char[5];

for(inti = 0 ; i<5 ; i++)

{

     res[i] = (psw[i] + key[i])%256;

}

return res;

}

 

2.  Виктория с помощью этой же функции преобразует полученную строку, указывая ее в качестве параметра psw, но используя свой ключ, известный только ей. Результат преобразования отправляется Алексею.

3.  Алексей передает в функцию, приведенную ниже, в качестве параметров полученную от Виктории строку и свой исходный ключ:

 

char * D(char msg[5], char key[5])

{

char *res = new char[5];

for(inti = 0 ; i<5 ; i++)

{

          res[i] = (msg[i] - key[i])%256;

}

returnres;

}

 

4.       Возвращаемое функцией значение отправляется Виктории, по которому она восстанавливает пароль.

Алексей отказался от предложения Виктории, сославшись на то, что если не обеспечить подтверждение подлинности абонентов, то нарушитель сможет узнать пароль при перехвате отправляемых по сети строк. Прав ли Алексей? Какой пароль передавался Виктории, если в первом сообщении была перехвачена посланная Алексеем строка ”wskjq”.