Obliczanie sum MD5 w bash-u 14 June 2010

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 :)

Tagi: , , , , , ,

Zostaw odpowiedź