Всем добрый день!
Примерно полтора месяца назад я откликнулся на вакансию в одной московской компании. Мне дали "небольшое тестовое задание", в котором требовалось сбрутить пароль от небольшого (2 килобайта) зашифрованного файла. Файл состоит из шифртекста и хеша от открытого текста. Идея была такая: пароль может состоять из не более, чем 7 латинских букв различного регистра и цифр. Пароль хешируется, и его хеш используется в качестве ключа для расшифровки. Правильность расшифровки можно проверить, прогнав полученный plaintext через хеш-функцию и сравнив результат с хешом в зашифрованном файле.
В чем проблема? 62^7 — это примерно 3.5 триллиона различных паролей. Если перебирать миллион паролей в секунду, то понадобится потратить на это порядка тысячи машинных часов, что абсолютно неприемлемо делать ни на своей машине (слишком долго), ни на амазоновском инстансе (слишком дорого).
Собственно говоря, на тестовое задание я забил (хоть там и было сказано, что если вы не сможете подобрать пароль, то всё равно стоит прислать код). Однако, бугурт до сих пор остался. Теперь мне хочется таки написать брутфорс, чтобы узнать: что же господа спрятали внутрь файла?
Во-первых, хочу узнать общественное мнение: насколько этично выкладывать непосредственно материалы тестового задания и работающий код?
Во-вторых, а много ли желающих погонять свою машинку в течение нескольких суток ради шанса получить, к примеру, гифты в Стиме в пределах 1-2 тысяч рублей? Плюсаните, пожалуйста, первый комментарий (и, для баланса, минусаните второй).
P.S. Если кто готов использовать для такой цели что-то ну совсем мощное (например, стоечный сервер с десятками ядер) — напишите, пожалуйста, в комментариях.