Information
- Rating
- 2,795-th
- Location
- Санкт-Петербург, Санкт-Петербург и область, Россия
- Date of birth
- Registered
- Activity
Specialization
Backend Developer
Middle
C#
Multiple thread
Object-oriented design
Software development
SQL
ASP.Net
PostgreSQL
Linux
MongoDB
Кто-то не сумел сдать экзамен и потому не поступил, в чем несправедливость-то?
Когда я еще учился в школе, и когда ЕГЭ еще не придумали, знаете сколько случаев было, когда умные люди не поступали не потому, что что-то не знали и не ответили на какой-то вопрос приемной комиссии, а просто потому, что все места уже проплачены и экзаменаторы просто заваливали? Вот это была несправедливость! А здесь, уж извините, человек сам не ответил на вопросы ЕГЭ, и кроме него не виноват абсолютно никто.
А если говорить, как принято в криптографии, то я Вам так и скажу: нет оснований считать, что такой подход увеличивает вероятность коллизий ;) А теперь Вы можете искать уязвимости. И лишь когда найдете их, да еще и продемонстрируете на практике атаку на предложенный алгоритм, вот тогда те, кто такой подход уже используют, может быть, подумают, что пора бы переходить на другой метод. Обычно так бывает (взять тот же AES, в котором есть целая куча теоретических уязвимостей,
покане реализуемых на практике).Напротив, радужная таблица представляет собой особым образом сформированный набор данных, не содержащий в явном виде всех значений хэш-функции и соответствующих им исходных строк. А операция восстановления пароля по значению хэш-функции, в случае использования радужных таблиц, представляет собой не просто обычный поиск в базе данных, а целый ряд операций вычисления и соответствующих запросов к базе.
А так, кто будет решать, что именно нужно знать будущему IT-шнику? Посмотрите по каментам в этой теме — кто-то говорит, что программисту системы счисления ни к чему, кто-то, напротив, считает их знание и понимание необходимым. И те, и другие — вполне успешные практикующие программисты, только одни бы не смогли поступить.
А сейчас кто-нибудь решит, что будущему IT-шнику ну просто необходимо знать систему команд ARM-процессора и наполнит ЕГЭ соответствующими вопросами.
Я вот тоже попал в эксперимент и сдавал ЕГЭ по математике в 2002. Да, ходил на курсы, на которых узнал много нового, что и позволило мне сдать экзамен на отлично (набрал высший бал в своей школе, хоть и далеко не 100). Но вот что интересно, все, что я на этих курсах узнал, оно все было в школьной программе, а вот преподавание математики у нас было, мягко говоря, не на уровне.
Так что, я так думаю, что если кто-то что-то не изучает, то это, скорее, проблема преподавания, а не школьной программы. Учителя просто не могут / не хотят учить детей тому, чему учить должны. И вот результат.
И вот тут, конечно, уже Ваша правда. Если ученик видит, что учителя халтурят, но реально интересуется предметом, и хочет сдать ЕГЭ, то ему надо заниматься самому. Благо, сейчас для этого все возможности, это у меня тогда не было ни компьютера, ни тем более, Интернета.
P.S. У вас хорошие олимпиады были. А я был на олимпиадах, на которых все тот же QBASIC и Турбо Паскаль…
Просто я как-то надеялся, что если есть такие задания в ЕГЭ, то, наверное, все это стало частью обязательной школьной программы. Оказывается, за 10 лет в школах так ничего и не изменилось…
Ну и Вы же сами участвовали в многочисленных обсуждениях «соленых хэшей» в последние две недели. Там большинство PHP-шников, и в общем-то, размер результата хэш-функции, и еще много всякого — вполне себе не лишние знания.
С другой стороны, если в задании просят отсортировать массив, а экзаменуемый пишет ksort($array), то возникает резонный вопрос: «Он либо издевается, либо просто напросто не знает алгоритма сортировки». В обоих случаях, вполне логично попросить этого человека пояснить именно алгоритм сортировки, а не продемонстрировать знание стандартных функций языка.
Кстати, чем лучше устный экзамен — всегда можно сразу устранить подобные вопросы.
Другой пример: чтобы понимать, сколько байт займет результат 128-битной хэш-функции и сколько всего таких результатов может существовать.
Как видим, базовые вещи нужно знать даже в таких, казалось бы далеких от «железа» языках, как PHP.
Более вероятные коллизии из-за уменьшения мощности исходного множества значений? А если так: md5(pass|md5(pass|md5(pass|salt))), всего 500000 раз? Мощность исходного множества не уменьшается, ведь pass присутствует в каждой итерации, а значит и вероятность коллизий не увеличивается.
И потом, если на каждой итерации использовать пароль, т.е. не md5(md5(md5(pass|salt))), а md5(pass|md5(pass|md5(pass|salt))), разве это также увеличит вероятность коллизий? Ведь в таком случае мы просто увеличиваем длину ключа неким значением, а не сужаем исходное множество.
ИМХО, надо не коллизий бояться, а слишком высокой скорости вычисления хэш-функции. Потому что когда брутят, находят не коллизии, а именно исходные пароли. И брутят только когда в этом есть смысл, т.е. когда могут добиться высокой скорости брута — порядка миллионов, десятков миллионов и сотен миллионов значений в секунду.
Так что уникальная для каждого пользователя соль, специальные медленные хэш-функции, ну и нормальные пароли, естественно.