Intereting Posts
Условия проектирования MVC: CRUDing унаследованные модели Почему .htaccess перенаправляет URL-адрес маршрутизации, но разрывает ссылки css / js / image после двух уровней в глубину? Отобразить виджет внутри CGridView в Yii Как взаимодействовать с XBox API с помощью PHP и cURL Время работы функции PHP XAMPP отличается от местного времени машины Ошибка в получении последнего вставленного идентификатора запроса с использованием пакетной вставки в CodeIgniter API Google Диска PHP: Files.get возвращает значение null Примечание. Неверно сформированное числовое значение, встречающееся в C: \ xampp \ htdocs \ Space \ Find \ index.php в строке 21 Symfony2 / Doctrine: SQL to DQL для построителя запросов в репозитории, чтобы создать форму поиска Значения из пользовательских мета-ящиков повторяются в сообщениях Хранить дубликаты при использовании array_diff Как прикреплять и показывать изображение по почте с помощью php? Перехват маршрута Laravel Не работает PHP echo echo? Проверьте, существует ли база данных (MySQL), и если она не создается в PHP

Почему один и тот же ввод возвращает два разных хеша MD5?

Хорошо, у меня есть два файла. Они ТОЧНЫЕ.

Первый файл: http://iadsonline.com/servconfig.php

Второй файл: http://xzerox.info/servconfig.php

Однако, когда я использую md5_file (), чтобы получить их MD5, они возвращают два разных MD5.

Первый возвращает cc7819055cde3194bb3b136bad5cf58d , что неверно, а второе возвращает 96a0cec80eb773687ca28840ecc67ca1 , что верно.

Файл является просто  

Чтобы проверить, я использовал этот код:

 $contents = file_get_contents($URL); echo htmlentities($contents); 

И они оба возвращаются  

Так почему же они хешируют их по-другому?

Второй заканчивается новой строкой, первая – нет.

Пытаясь curl , я вижу, что первый из них –   без новой строки после него второй – это   с новой линией после него. Так что, конечно, они будут хэш по-разному. И действительно, даже в командной строке (подсказка bash):

 $ md5 sc.dat MD5 (sc.dat) = cc7819055cde3194bb3b136bad5cf58d $ md5 zz.dat MD5 (zz.dat) = 96a0cec80eb773687ca28840ecc67ca1 

У вас есть пробелы в любом из этих файлов? Откройте их в текстовом редакторе и покажите все символы .

Альтернативно, запустите что-то вроде этого

 echo str_replace(array("\n", "\t", "\r"), '[I AM HIDING!]', file_get_contents($URL)); 

Если вы видите [Я СИДУ!] , Вы будете знать, что делать 🙂

это также случилось со мной. Я установил ту же кодировку (utf-8 без спецификации) ко всем файлам, которые хранят и извлекают хешированные строки 🙂 теперь md5 () дает те же результаты 🙂