Ostanio napisałem sobie na szybko skrypt do sprawdzania i porównywania sum MD5 plików w systemie, ale jak porównałem rezultaty z ‘ręczną robotą’ (bez skojarzeń! ;) ) to się okazało, że nowy skrypt nie działa. Ponieważ nie mógł to być przypadek, że wszystkie sumy zostały źle obliczone, to postanowiłem sprawdzić inne narzędzia:
$ php -r "echo md5('test1234');" 16d7a4fca7442dda3ad93c9a726597e4 echo test1234|md5sum|awk '{print $1}' eddc02b200ae8a15a7e6b44ac05bf5f1
W PHP działa, więc jaki jest powód? Rozwiązanie jest dość proste. Użyłem komendy ‘echo’ do drukowania znaków, które później miały być hashowane w MD5. Domyślnie ‘echo’ dodaje znak nowej linii (\n) do tych znaków i dlatego md5sum źle (dobrze!) przeliczał. Aby uniknąć tego kłopotu należy dodać przełącznik ‘-n’ do echo, który – przedrukowując za MANualem – nie wypisuj znaku nowej linii na końcu wiersza.
$ php -r "echo md5('test1234');" 16d7a4fca7442dda3ad93c9a726597e4 $ echo -n test1234|md5sum|awk '{print $1}' 16d7a4fca7442dda3ad93c9a726597e4
No i wszystko działa :)