24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
Двач, блять, что за хуйня? Как файлы с разными размерами могут иметь, блять, одинаковый md5-хеш? Что за хуйня, блять?
Уже 7 лет ковыряю движок для борд, чисто по фану. Ковыряю раз в полгода, но вот увидел что при загрузке файла не убирается EXIF-дата. Решил это исправить. Нагуглил что лучший способ это пересоздать картинку imagecreatefromjpeg + imagejpeg. И мне начало выдавать ошибку, что после удаления EXIF-данных и перемещения из временного файла PHP в нормальную картинку - размеры файлов не совпадают. Написал тестик: на каждом этапе сохраняется размер и хеш, пик2. origin - это картинка которую я отправил, after_imagejpeg это после удаления EXIF, а end_file это после перемещения в папку где картинки хранятся.
И Я БЛЯТЬ ОХУЕЛ У 2х последних картинок до перемещения move_uploaded_file и после разный размер, но одинаковый блять хеш! Анон, разве такое возможно?
Код-говнокод пикрелейтед. Вырезал из него всякую хуйню типа проверки поддерживаемого типа и т.д., чтобы все 3 этапа стояли вместе. Думаю разобраться легко.
Я понимаю что я кодерская обезьянка, не бейте, но я реально нахуй что-то не понимаю что за хуйня. 1) Как может быть разный хеш, если содержимое одинаковое? 2) Как чисто функция move_uploaded_file может увеличивать ебучий размер, если даже оригинальная картинка блять меньше?
>>222614692 (OP) >1) Как может быть разный хеш, если содержимое одинаковое? * одинаковый хеш если содержимое разное Фикс. Я уже успел накидаться с горя.
>>222615078 Этот сечет фишку. Я тоже как бы скриптовик-зайтейник (руби\питон), но тут ответ даже не в комьютенр саенс, это блядь бытовая логика, но пхпешники и в нее не могут
Если изменить 3й параметр imagejpeg, то меняется почему-то меняется размер только в end_file, но не в after_imagejpeg! Я нахуй не понимаю: если imagejpeg записывает на 2м этапе другой размер из-за 3го параметра, то почему это не отражается на размере after_imagejpeg?
>>222616045 Работаю с ним только чтобы получать уникальные идентификаторы для картинок. От автора движка осталось, а я и не менял, ибо не знаю чем заменить
>>222618701 Нет, не специально, я в душе не ебу как пхп работает, я вижу по коду что второй и третий файл это один и тот же файл, вижу что совпадает размер первого и второго файла по выводу. Подсчитай другие КС там же, они так же совпадут. Во втором случае ты пишешь размер одного файла и КС от другого.
>>222619114 Только-что запилил заново копию, и прогнал через консоль: на странице показывает одинаковые хеши, в консоли - разные. Пиздец я хуею. Окей, я ебал, завтра уже разбираться буду, а сейчас откачу всё как было. Если завтра окажется что я где-то что-то не то написал, то я охуею
Спасибо всем кто тут со мной аутировал. Если у кого будет идея что я не так сделал с move_uploaded_file, то пишите, открытым оставлю пока не потонет
>>222614692 (OP) Ты шо, тупой? Это хеш, коллизии неизбежны, это и так очевидно - разных хешей длины 32 всего 16^32, а разных файлов твоего размера - 8^5256735... По-моему все очевидно. Хэш это не идентификатор, если ты где-то тупо используешь его как ключ - убейся иди читай алгоритмы.
>>222614692 (OP) Хоть тебе петушня в треде и правильно говорит про существования коллизий, в данном случае ты либо вошел в историю компьютерных наук, что маловероятно, либо ошибся в коде, как тебе уже говорили. Судя по тому, что ты даже не в состоянии это отдебажить, квалификация у тебя такая себе, поэтому ставлю на ошибку.
>>222615078 >>222614968 Эмм, питонодауны, вы сами-то понимаете, какова вероятность коллизии МД5-го? Пиздец, вот явный пример того, какие ебланы пошли в питон. Раньше ПХП был бичом #1, сейчас первое место почётно делят питон и ПХП.
>>222614692 (OP) >Двач, блять, что за хуйня? Как файлы с разными размерами могут иметь, блять, одинаковый md5-хеш? Что за хуйня, блять? LUL. Ты рофлишь чтоле?
Уже 7 лет ковыряю движок для борд, чисто по фану. Ковыряю раз в полгода, но вот увидел что при загрузке файла не убирается EXIF-дата. Решил это исправить. Нагуглил что лучший способ это пересоздать картинку imagecreatefromjpeg + imagejpeg.
И мне начало выдавать ошибку, что после удаления EXIF-данных и перемещения из временного файла PHP в нормальную картинку - размеры файлов не совпадают.
Написал тестик: на каждом этапе сохраняется размер и хеш, пик2. origin - это картинка которую я отправил, after_imagejpeg это после удаления EXIF, а end_file это после перемещения в папку где картинки хранятся.
И Я БЛЯТЬ ОХУЕЛ
У 2х последних картинок до перемещения move_uploaded_file и после разный размер, но одинаковый блять хеш!
Анон, разве такое возможно?
Код-говнокод пикрелейтед. Вырезал из него всякую хуйню типа проверки поддерживаемого типа и т.д., чтобы все 3 этапа стояли вместе.
Думаю разобраться легко.
Я понимаю что я кодерская обезьянка, не бейте, но я реально нахуй что-то не понимаю что за хуйня.
1) Как может быть разный хеш, если содержимое одинаковое?
2) Как чисто функция move_uploaded_file может увеличивать ебучий размер, если даже оригинальная картинка блять меньше?