All streams
Search
Write a publication
Pull to refresh
52
0.2
Alexander Russkiy @Kolonist

Разработчик

Send message
То, что экзамены всегда существовали, никак не отменяет того факта, что молодой человек в данном конкретном случае лишился возможности честно получать интересную ему профессию.
А я не вижу логики в написанном Вами. Человек сам честно не сдал экзамены, и потому совершенно справедливо не поступил. Почему виноватым остался кто-то третий? И, заметьте, не русский язык завалил, а информатику — профильный предмет!

это — лишь следствие несправедливости
Кто-то не сумел сдать экзамен и потому не поступил, в чем несправедливость-то?

Когда я еще учился в школе, и когда ЕГЭ еще не придумали, знаете сколько случаев было, когда умные люди не поступали не потому, что что-то не знали и не ответили на какой-то вопрос приемной комиссии, а просто потому, что все места уже проплачены и экзаменаторы просто заваливали? Вот это была несправедливость! А здесь, уж извините, человек сам не ответил на вопросы ЕГЭ, и кроме него не виноват абсолютно никто.
Государство ему ни в чем не отказывало. Всегда были экзамены, и всегда кому-то не хватало баллов для поступления. Всегда были те, кто нифига не знает по будущей специальности, но поступал, и были те, кто уже имел кое-какое представление о будущей специальности, но заваливал как якобы не нужный русский, так и более-менее профильную математику.
Ну функция MD5 исследована достаточно хорошо, и ее чувствительность к последним 32 символам исходной строки, вроде как, не выявлена. Хотя мы говорим, в общем-то, не о MD5, а о подходе вообще.

А если говорить, как принято в криптографии, то я Вам так и скажу: нет оснований считать, что такой подход увеличивает вероятность коллизий ;) А теперь Вы можете искать уязвимости. И лишь когда найдете их, да еще и продемонстрируете на практике атаку на предложенный алгоритм, вот тогда те, кто такой подход уже используют, может быть, подумают, что пора бы переходить на другой метод. Обычно так бывает (взять тот же AES, в котором есть целая куча теоретических уязвимостей, пока не реализуемых на практике).
Я когда о производительности радужных таблиц начал читать, тоже первым делом подумал: «О чем эти парни говорят, база данных — это же так бистро?!» Но немного почитав по теме, например, соответствующую статью в Вики, я понял, что радужная таблица — это не простая база данных типа (пароль, хэш_пароля).

Напротив, радужная таблица представляет собой особым образом сформированный набор данных, не содержащий в явном виде всех значений хэш-функции и соответствующих им исходных строк. А операция восстановления пароля по значению хэш-функции, в случае использования радужных таблиц, представляет собой не просто обычный поиск в базе данных, а целый ряд операций вычисления и соответствующих запросов к базе.
Ну ЕГЭ — это, в первую очередь, итоговый школьный экзамен. Так что вполне логично, если итоговый экзамен будет определяться именно пройденным материалом, предусмотренным заранее известной программой.

А так, кто будет решать, что именно нужно знать будущему IT-шнику? Посмотрите по каментам в этой теме — кто-то говорит, что программисту системы счисления ни к чему, кто-то, напротив, считает их знание и понимание необходимым. И те, и другие — вполне успешные практикующие программисты, только одни бы не смогли поступить.

А сейчас кто-нибудь решит, что будущему IT-шнику ну просто необходимо знать систему команд ARM-процессора и наполнит ЕГЭ соответствующими вопросами.

Я вот тоже попал в эксперимент и сдавал ЕГЭ по математике в 2002. Да, ходил на курсы, на которых узнал много нового, что и позволило мне сдать экзамен на отлично (набрал высший бал в своей школе, хоть и далеко не 100). Но вот что интересно, все, что я на этих курсах узнал, оно все было в школьной программе, а вот преподавание математики у нас было, мягко говоря, не на уровне.

Так что, я так думаю, что если кто-то что-то не изучает, то это, скорее, проблема преподавания, а не школьной программы. Учителя просто не могут / не хотят учить детей тому, чему учить должны. И вот результат.

И вот тут, конечно, уже Ваша правда. Если ученик видит, что учителя халтурят, но реально интересуется предметом, и хочет сдать ЕГЭ, то ему надо заниматься самому. Благо, сейчас для этого все возможности, это у меня тогда не было ни компьютера, ни тем более, Интернета.
Когда курсовик по цифровым вычислительным машинам писал :)
Ну да, у меня знакомые и без всего этого строчат быдлокод и зарабатывают нормальные деньги. И никак не комплексуют, что не могут перевести 128 в двоичную систему счисления :)
Ну это я сейчас могу все это решить, после 11 класса, конечно, не смог бы. Просто я надеялся, что раз есть такие задания, то, видимо, все это входит в обязательную школьную программу по информатике.

P.S. У вас хорошие олимпиады были. А я был на олимпиадах, на которых все тот же QBASIC и Турбо Паскаль…
Ну когда я в школе учился (2002 год выпуска), мы тоже ничего этого не изучали. У нас был QBASIC на уровне ввести 10 элементов массива, отсортировать и вывести. Был Word и Excel на уровне ввести текст, применить шрифт и размер, выровнять по ширине, ввести форуму аля A1+2. Ах да, двоичную систему счисления изучали. О том, что существует восьмеричная или шестнадцатеричная, даже не упоминалось.

Просто я как-то надеялся, что если есть такие задания в ЕГЭ, то, наверное, все это стало частью обязательной школьной программы. Оказывается, за 10 лет в школах так ничего и не изменилось…
Без понимания сути можно сделать очень много. Но ИМХО, именно понимание сути и отличает кодера от программиста, а скрипт-кидди от хакера.

Ну и Вы же сами участвовали в многочисленных обсуждениях «соленых хэшей» в последние две недели. Там большинство PHP-шников, и в общем-то, размер результата хэш-функции, и еще много всякого — вполне себе не лишние знания.
В PHP это стандартная функция, доступная по умолчанию. Т.е. запретить ее — это то же самое, что запретить функцию abs() или inc() в паскале.

С другой стороны, если в задании просят отсортировать массив, а экзаменуемый пишет ksort($array), то возникает резонный вопрос: «Он либо издевается, либо просто напросто не знает алгоритма сортировки». В обоих случаях, вполне логично попросить этого человека пояснить именно алгоритм сортировки, а не продемонстрировать знание стандартных функций языка.

Кстати, чем лучше устный экзамен — всегда можно сразу устранить подобные вопросы.
Ну например, чтобы понимать, почему константы сигнализации об ошибках в PHP представляют собой числа, являющиеся степенями двойки, и почему в функциях они комбинируются побитовыми операциями вроде «или» и «исключающего или».

Другой пример: чтобы понимать, сколько байт займет результат 128-битной хэш-функции и сколько всего таких результатов может существовать.

Как видим, базовые вещи нужно знать даже в таких, казалось бы далеких от «железа» языках, как PHP.
Варианты, что по ссылке выше вполне можно решить. Тем более, что в школе это все, видимо, изучается.
предположение о том, что md5(md5()) более стойко, чем md5() — неверно.
Правильно. Но так делают не для повышения стойкости, а для увеличения времени, затрачиваемого на вычисление. Конечно, если итерации всего 2, то и говорить не о чем, но если их миллион?

Более вероятные коллизии из-за уменьшения мощности исходного множества значений? А если так: md5(pass|md5(pass|md5(pass|salt))), всего 500000 раз? Мощность исходного множества не уменьшается, ведь pass присутствует в каждой итерации, а значит и вероятность коллизий не увеличивается.
Да, но ведь современные рекомендованные функции вывода ключа завязаны именно на большом количестве итераций обычных хэш-функций. Та же PBKDF2 — основана на большом количестве итераций для замедления ее вычисления, а она ведь хорошо исследована криптоаналитиками.

И потом, если на каждой итерации использовать пароль, т.е. не md5(md5(md5(pass|salt))), а md5(pass|md5(pass|md5(pass|salt))), разве это также увеличит вероятность коллизий? Ведь в таком случае мы просто увеличиваем длину ключа неким значением, а не сужаем исходное множество.
Мне вот тоже интересно. Все кричат про коллизии, но кто их видел на самом деле? Какова вероятность коллизии? Какова вероятность того, что коллизией к паролю, состоящему из 8-15 символов, набираемых с клавиатуры, будет строка, также состоящая из 1-15 символов, набираемых с клавиатуры? Это еще возможно, если 32-битную CRC32 использовать, но при 128-битной MD5...?

ИМХО, надо не коллизий бояться, а слишком высокой скорости вычисления хэш-функции. Потому что когда брутят, находят не коллизии, а именно исходные пароли. И брутят только когда в этом есть смысл, т.е. когда могут добиться высокой скорости брута — порядка миллионов, десятков миллионов и сотен миллионов значений в секунду.

Так что уникальная для каждого пользователя соль, специальные медленные хэш-функции, ну и нормальные пароли, естественно.
Результатов любой хэш-функции конечное множество. (с) К.О.
Если кому-то интересно, то здесь лежит PHP-класс с точно таким же интерфейсом, как и у представленного выше Anubis(), но использующий функции Mcrypt. По-сути, это обертка, упрощающая использование расширения.
Пока я писал, Вам уже вместо меня ответили. Собственно, я примерно то же самое написал — в bcrypt надо явно задавать соль, равно как и в функции crypt(), когда мы вычисляем с ее помощью bcrypt-хэш.

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