На этой неделе я чувствовал себя очень глупо.

Я прошел через первые две проблемы недели 2 CS50x относительно невредимым.

Мои решения для Цезаря и его немного более сложного кузена, Виженера, возможно, не были самыми элегантными, но набрав 85% и 95% соответственно, я чувствовал себя довольно уверенно, поскольку Я сел, чтобы попытаться решить последнюю задачу недели, Crack.

Я думаю, было бы справедливо сказать, что уверенность была неуместной

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

Прелесть курса CS50x в том, что эти инструкции фактически отображаются рядом с IDE, и до сих пор в ходе курса я пробирался между ужасным кодом и прекрасно написанными пошаговыми подсказками, даже не открывая другую вкладку.

Я нашел Crack, кхм, немного сложнее.

Студентам рекомендуется попробовать это, если они чувствуют себя «более комфортно», и хотя проблема (написать программу, которая может взломать пароль пользователя с учетом ее хеш-кода), безусловно, более сложна, самое большое изменение в передаче - это отсутствие подсказок.

В то время как Цезарь имеет 1880 слов полезного ободрения и подсказок, Crack предложил всего 550. В этом разница между эссе для студентов и поспешно написанной статьей на Medium.

Один бит выбора спецификации гласил:

Предположим, что каждый пароль был хеширован с помощью функции C crypt на основе DES (а не на основе MD5).

Было бы справедливо сказать, что в этот момент тренировочные колеса были отключены.

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

Итак, я начал решать простейшую подзадачу: извлекать «соль» (два символа в начале хешированного пароля)

И я даже не мог этого сделать.

Я совершенно ничего не понял: я вспомнил лекцию на прошлой неделе, и ничего не пришло мне в голову. Все, что я мог вспомнить, это очень пространное объяснение различных алгоритмов сортировки, которое, хотя и дало мне элементарное представление о некоторых шутках о / r / ProgrammerHumor о пузырьковой сортировке, не давало мне возможности извлекать первые два символа из строки.

Я пересмотрел все видео Дуга, посвященные той неделе, и до сих пор ничего не понял, как решить эту проблему.

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

Я столкнулся с проблемой, для решения которой материалы CS50x не позволили мне решить, поэтому я сделал то, что, как мне достоверно сообщили, делают все хорошие инженеры-программисты, и обратился к Stack Overflow.

И я до сих пор этого не понял.

Теперь я надеюсь, что в будущем появится моя версия, которая оглядывается на эти ответы на SO и находит их невероятно простыми, но в тот момент я чувствовал себя довольно удрученным.

Я чувствовал себя 5-летним ребенком, который пытался составить головоломку за пределами своего возрастного диапазона, который пытался начать с поиска углов, но я не понимал, что это за угол, поэтому я попытался найти его в словаре, но затем понял, что Я не умел читать.

Что я ценю, это довольно специфическая эмоция.

Однако, вернувшись к результатам поиска с моей отчаянной просьбой преобразовать char в строку в c, я заметил результат от Quora.

Я прочитал это, и это действительно имело для меня смысл! Я понятия не имею, кто вы, Эмбер Ананд, но хочу поблагодарить вас за то, что вы разбили это так, как я действительно мог понять.

Итак, создав массив, последний символ которого был \ 0, я мог заполнить первые два пробела первыми двумя символами первого аргумента в командной строке, который был введенным пользователем хешированным паролем.

Выглядело это так:

угольная соль [3];

соль [0] = аргумент [1] [0];
соль [1] = аргумент [1] [1];
соль [2] = ‘\ 0’;

Какой вывод? Не бойтесь упростить его: если ответ, который вы можете понять, находится не на Stack Overflow, а на Quora или C для чайников, все в порядке.

Еще раз поздравьте Эмбер Ананд и пожелайте мне удачи в моих попытках на следующей неделе решить актуальную проблему!

📝 Прочтите этот рассказ позже в Журнале.

👩‍💻 Просыпайтесь каждое воскресное утро и слышите самые интересные истории недели в области технологий, ожидающие в вашем почтовом ящике. Прочтите информационный бюллетень« Примечательные в технологиях ».