[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Альтернатива md5_file
sofmes
Здравствуйте. Не подскажите, какие есть альтернативы для функции md5_file? Стандартная функция не правильно хеширует файлы.
Valick
Цитата
Стандартная функция не правильно хеширует файлы

оба-на, и давно?


_____________
Стимулятор ~yoomoney - 41001303250491
sofmes
Valick, не знаю как давно, но один и тот же файл шифруется по разному на диезе и пхп. Проблема в 13 байте.
PS Может быть так, что это из-за неправильной настройки php?
DedMorozzz
вообще есть алгоритм SHA ещё, но лучше разобрать мд5. Попробуй сделай MD5('aaa'); в мускуле, пхп и диезе(чесно говоря, не в курсе что это).
Где будет отличаться - тот и виновник

Так же открывается файл в одной и той же кодировке? Вероятно в этом проблема

_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
sofmes
DedMorozzz, вся суть в том, что если файл содержит 1 строчку, то все хешируется одинаково, но если более 1, то хеш расходится. Можно узнать, как в php задать нужную кодировку для открытия файла.
DedMorozzz
Цитата
Можно узнать, как в php задать нужную кодировку для открытия файла.

Это я не подумав написал smile.gif Создать можно в конкретной кодировке, открыть - всегда в той, которая создана.

Цитата
если файл содержит 1 строчку, то все хешируется одинаково
Вывод - по разному интерпритируется перенос строки. Этот момент необходимо привести в единый вид, и после хешировать

_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
sofmes
DedMorozzz, понятно. В C# заменить 10 и 13 байты только на 10 у меня труда не составит. Не хотел этого делать, но похоже все же придется. Просто думал есть готовый альтерированный вариант md5_file для php. Но все равно спасибо. smile.gif
Nikitian
Такое ощущение, что вы у файла построчно хэш считаете, что странно, т.к. функция md5_file() читает файл целиком. 10 и 3 это видимо символы конца строки и перевода каретки. Они никакого отношения не имеют к расчёту хэша. Если у вас получаются разные хэши, значит в исходном варианте разные файлы. Посмотрите файлы и сравните их. Если разницы не увидите, то выложите сюда, посмотрим вместе.
sofmes
Nikitian, так он его считывает как байты же. Соответственно и все переходы на новую строку он считывает тоже. Это все относится к файлу.

Хеш приложенного файл через online-convert.com:
7df454293cb5d016e893f6ee2961506f

Хеш приложенного файла через md5_file():
d41d8cd98f00b204e9800998ecf8427e

Хеш приложенного файла средствами C#:
7df454293cb5d016e893f6ee2961506f
Nikitian

<?php
echo md5_file(dirname(__FILE__).'/dls');

Вывод, удивительно, но как и везде ;)

7df454293cb5d016e893f6ee2961506f
sofmes
Nikitian, вы правы, все правильно считает. Я до этого всегда заливал по ftp через FileZilla. Сейчас залил через ISP и все правильно схешировалось.

Спасибо за помощь. smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.