Архив задач

2014 [9-10] Коллизия

В результате анализа подсистемы защиты удалось выяснить, что подтверждение имени пользователя, работающего за компьютером, осуществляется по средствам паролей. Для реализации проверки введенный пароль подвергается преобразованию при помощи функции, исходный код которой также был восстановлен и представлен на языке С (см. рис. 2). Результат работы функции сверяется с эталонами, хранимыми в базе данных, для принятия решения о том верен пароль или нет.  Если известно, что пароль «КОНФИДЕНЦИАЛЬНОСТЬ» верен, томожно ли утверждать, что существуют пароли, которые пройдут описанную проверку и отличные от указанного, приведите пример такого пароля.

 

int HASH(char *text)

{

int k=0, H;

char temp[6], letter = 'G';

for(;(k<strlen(text))&&(k<6);++k) temp[k]=text[k];

if (k < 6) for(;k<6;k++) temp[k]= letter;

  H = ((temp[0]+temp[1]+temp[2])&7)*64;

  H += ((temp[0]+temp[2]+temp[4])&7)*8;

  H += ((temp[1]+temp[3]+temp[5])&7);

return H;

}

Рис. 2. Исходных код