Идея первоапрельской шутки
Apr. 6th, 2012 04:40 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Берем и подсовываем человеку, который занимается, ну скажем разработкой библиотеки для работы с графическими файлами, два файла, дающие коллизию md5. И говорим "ой чтой-то два одинаковых до бита файла по-разному отображаются".
Правда, я бы если бы такое делал не стал бы использовать для этого формат ppm. Больно уж он простой.
Гораздо лучше взять jpg, png или tiff, куда действительно можно какой угодно фигни в неотображаемые блоки напихать без нарушения формата.
С другой стороны, поверить что в PPM-е возможна коллизия - еще сложнее. Человек, который знает как устроен формат PPM, пожалуй, даже не подумает сверить размеры файлов с информацией из загловка.
Я не утверждаю, что над Тутубалиным пошутили именно таким способом. Но проверить эту гипотезу я ему предложил.
А вообще идея клевая. Действительно, любой более-менее квалифицированный программист знает что такое MD5, но только профессиональные параноики и криптографы помнят, что вообще-то коллизии генерятся достаточно легко.
Поэтому вряд ли человек начнет с того, что будет проверять, правда ли файлы, имеющие одинаковую md5, побитово совпадают.
Правда, я бы если бы такое делал не стал бы использовать для этого формат ppm. Больно уж он простой.
Гораздо лучше взять jpg, png или tiff, куда действительно можно какой угодно фигни в неотображаемые блоки напихать без нарушения формата.
С другой стороны, поверить что в PPM-е возможна коллизия - еще сложнее. Человек, который знает как устроен формат PPM, пожалуй, даже не подумает сверить размеры файлов с информацией из загловка.
Я не утверждаю, что над Тутубалиным пошутили именно таким способом. Но проверить эту гипотезу я ему предложил.
А вообще идея клевая. Действительно, любой более-менее квалифицированный программист знает что такое MD5, но только профессиональные параноики и криптографы помнят, что вообще-то коллизии генерятся достаточно легко.
Поэтому вряд ли человек начнет с того, что будет проверять, правда ли файлы, имеющие одинаковую md5, побитово совпадают.
no subject
Date: 2012-04-06 12:57 pm (UTC)no subject
Date: 2012-04-06 01:00 pm (UTC)no subject
Date: 2012-04-06 02:03 pm (UTC)no subject
Date: 2012-04-06 12:59 pm (UTC)Ну и уж если фишка так легла - то, по-моему, нужно быть полным профессиональным... ну, см. выше, чтобы не вспомнить первым делом о принципиальной неуникальности хэша.
no subject
Date: 2012-04-06 01:06 pm (UTC)no subject
Date: 2012-04-06 01:16 pm (UTC)Но
перваявторая мысль у любого нормального человека, который вообще слышал, что такое хэш, в этом случае должна быть "а не коллизия ли у нас?". Вторая - потому что первая, конечно, "ух ты!".no subject
Date: 2012-04-06 01:09 pm (UTC)no subject
Date: 2012-04-06 01:14 pm (UTC)no subject
Date: 2012-04-06 01:18 pm (UTC)no subject
Date: 2012-04-06 01:21 pm (UTC)Кроме тех, разумеется, кто сталкивался с коллизиями раньше.
no subject
Date: 2012-04-06 01:33 pm (UTC)P. S. Как же задолбал этот ШМ, снова требующий OpenID через пять минут после того, как я предоставил его. Все хорошие новости СУПа не раздражают больше.
no subject
Date: 2012-04-06 01:41 pm (UTC)no subject
Date: 2012-04-06 02:05 pm (UTC)no subject
Date: 2012-04-06 02:07 pm (UTC)всё написано до нас ;)
# for i in file1 file2; do md5sum $i; done
no subject
Date: 2012-04-06 02:08 pm (UTC)no subject
Date: 2012-04-06 02:44 pm (UTC)Кстати, как вы собираетесь сравнивать md5-суммы? Посчитать от них md5-суммы и дальше по рекурсии?
no subject
Date: 2012-04-06 07:19 pm (UTC)Вы не поверите... Глазками. Размер итогового хэша - 32 шестнадцатиричных разряда.
no subject
Date: 2012-04-06 02:19 pm (UTC)И это ПОСЛЕ всего треда про коллизию.
no subject
Date: 2012-04-06 02:59 pm (UTC)А md5… Человек, я так понимаю, совсем не программист.
no subject
Date: 2012-04-06 05:47 pm (UTC)no subject
Date: 2012-04-06 06:07 pm (UTC)no subject
Date: 2012-04-06 06:15 pm (UTC)Когда файлов 10 (5 пар), проще md5 *ppm | awk '{print $1}' | sort | uniq -c | grep -v '^2' (и выдаст что-то только если есть разница)
А когда их ~600 (большой тестовый набор, 300 эталонов и 300 результатов прогона) общим объемом больше 10Gb, то md5 банально быстрее в разы т.к. эталоны можно просто не считывать с диска (и не хранить), их md5 не меняется.
Ну и соответственно, когда файлов всего 2 - проще тоже md5 и последние 3-4 цифры на глазок сравнить. Коллизии в моем случае (генерация моим кодом) настолько невероятны, что я пренебрегаю.
no subject
Date: 2012-04-06 06:32 pm (UTC)uniq -u
no subject
Date: 2012-04-06 05:47 pm (UTC)Было бы весьма удивительно.
Оба сравниваемых ppm порождены моей программой.
P.S. Анальное огораживание в этом аналоге ЖЖ меня удивляет.
no subject
Date: 2012-04-07 07:57 am (UTC)Хотя из твоего поста мне было неочевидно, что файлы породил ты сам. Вот если бы эти файлы были присланы кем-то репортящем баг, это могла бы быть такая шутка.
no subject
Date: 2012-04-06 05:48 pm (UTC)no subject
Date: 2012-04-06 06:08 pm (UTC)no subject
Date: 2012-04-07 02:44 am (UTC)no subject
Date: 2012-04-06 01:18 pm (UTC)no subject
Date: 2012-04-06 05:24 pm (UTC)no subject
Date: 2012-04-06 05:58 pm (UTC)... Оксиморон как артефакт - это нонсенс априори ...
no subject
Date: 2012-04-06 06:23 pm (UTC)no subject
Date: 2012-04-06 09:23 pm (UTC)Power of Golang :-)
Date: 2012-04-08 01:34 pm (UTC)no subject
Date: 2012-04-09 01:00 pm (UTC)no subject
Date: 2012-04-07 08:23 pm (UTC)Любой кто хоть сколько-то работает с пользователями начнет тупо с побайтного сравнения файлов. Ибо все врут.
8о)
no subject
Date: 2012-04-09 11:14 am (UTC)no subject
Date: 2012-04-09 11:20 am (UTC)