Я создаю хеш на Busybox, который я сравниваю в сценарии php.
Однако результаты не желательны:
BusyBox v1.15.3 echo A|md5sum bf072e9119077b4e76437a93986787ef -
MacBook-Air:~ $ echo A|md5 bf072e9119077b4e76437a93986787ef
MacBook-Air:~ $ echo "A"|md5 bf072e9119077b4e76437a93986787ef
[root@centos67 ~] echo "A"|md5sum bf072e9119077b4e76437a93986787ef
.
PHP LAMP: echo md5("A"); 7fc56270e7a70fa81a5935b72eacbe29
PHP MAMP: echo md5("A"); 7fc56270e7a70fa81a5935b72eacbe29
Кроме того, гуглил онлайн md5 генерирующие скрипты всегда возвращайте тот же результат, что и в PHP выше.
Почему это происходит? В чем (если таковые имеются) разница между md5 и md5sum, и если есть разница, почему несоответствие именования между busybox и OSX?
Как я могу заставить PHP генерировать тот же хеш, который генерирует мой Busybox? С другой стороны (сделать Busybox gerenate PHP md5) тоже хорошо, но он должен работать с моей базовой версией Busybox.
Обнаруженный ответ оказался довольно простым.
GNU echo
всегда заканчивается новая линия.
Два возможных исправления:
BusyBox v1.15.3 echo -n A|md5sum 7fc56270e7a70fa81a5935b72eacbe29 -
MacBook-Air:~ $ echo -n A|md5 7fc56270e7a70fa81a5935b72eacbe29
MacBook-Air:~ $ echo -n "A"|md5 7fc56270e7a70fa81a5935b72eacbe29
[root@centos67 ~] echo -n "A"|md5sum 7fc56270e7a70fa81a5935b72eacbe29
.
PHP LAMP: echo md5("A"); 7fc56270e7a70fa81a5935b72eacbe29
PHP MAMP: echo md5("A"); 7fc56270e7a70fa81a5935b72eacbe29
или же
BusyBox v1.15.3 echo A|md5sum bf072e9119077b4e76437a93986787ef -
MacBook-Air:~ $ echo A|md5 bf072e9119077b4e76437a93986787ef
MacBook-Air:~ $ echo "A"|md5 bf072e9119077b4e76437a93986787ef
[root@centos67 ~] echo "A"|md5sum bf072e9119077b4e76437a93986787ef
.
PHP LAMP: echo md5("A\n"); bf072e9119077b4e76437a93986787ef
PHP MAMP: echo md5("A\n"); bf072e9119077b4e76437a93986787ef
Других решений пока нет …