Dlaczego otrzymuję inne wyniki z shasum Maca niż z innych kalkulatorów shasum?

13

Wchodzę:

appletree:~ somename$ shasum -a 512 <<< test

Wyjście to:

0e3e75234abc68f4378a86b3f4b32a198ba301845b0cd6e50106e874345700cc6663a86c1ea125dc5e92be17c98f9a0f85ca9d5f595db2012f7cc3571945c123  -

Następnie przechodzę do niektórych generatorów skrótów online i wpisuję „test”. Ich odpowiedzi to:

http://hashgenerator.de/ :

ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff

http://passwordsgenerator.net/sha512-hash-generator/ :

EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF

Generatory online się zgadzają. Czego mi brakuje w poleceniu konsoli Mac?

Czytałem manstrony. Widzę, że jest zaimplementowany przy użyciu biblioteki Perla. Myślę jednak, że sha512 byłby unikalnym oznaczeniem, więc muszę kopać głębiej.


Wydaje się, że istnieje duplikat pytania: Dlaczego mój skrót wiersza polecenia różni się od wyników mieszania online MD5? . Podczas gdy drugie pytanie jest w tym samym kontekście, co jest nieoczekiwanym białym znakiem, wyłania się z innej sytuacji.

  • <<<jest ciągiem tutaj i istnieje możliwość wyboru sposobu dodania nowego wiersza przez ciągi tutaj.
  • echo 'bla' |oznacza potokowanie, które wywołuje podpowłoki, a także zawiera argumenty dotyczące obsługi nowej linii. Tutaj wydaje się, że musisz wziąć pod uwagę wersję powłoki .
peter_the_oak
źródło
Wielkie dzięki dla sidehowbarker i Spiff.
Biała spacja
Zwróć uwagę, że ciąg tutaj ma być dokładnie identyczny z dokumentem o jednym wierszu tutaj, a dokument tutaj zawsze kończy się nową linią.
chepner
Nie jestem nowy w muszli, ale oto kilka wyrafinowanych szczegółów i nowości, za które jestem wdzięczny. Dziękuję za wszystkie komentarze i odpowiedzi.
peter_the_oak
Odkryliśmy, że polecenie shasum Maca nie różni się niczym. Problemem technicznie był błąd użytkownika, który dotyczył przekazywanych danych, a nie programu. Czy mogę zasugerować zmianę nazwy pytania na „Dlaczego otrzymuję inne wyniki niż shasum Maca…” W ten sposób ludzie mogą natychmiast podejrzewać problem stworzony przez użytkownika. (Gdybym to widział, mógłbym być mniej skłonny sprawdzić to pytanie. Jak to obecnie zatytułowane „Co odróżnia shasum powłoki mac od innych kalkulatorów shasum?”, Przyszedłem tutaj, aby dowiedzieć się o możliwych różnicach specyficznych dla komputerów Mac, co nie skończyło się tak
naprawdę

Odpowiedzi:

32

Dane wejściowe do shasumwywołania w pytaniu to test\n(z nową linią), a nie test.

Jeśli podasz testbez nowego wiersza shasum, otrzymasz takie same wyniki, jak cytowane narzędzia online:

$ echo -n "test" | shasum -a 512
ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff  -

Nawiasem mówiąc, myślę, że nie ma nic specjalnego ani specyficznego shasumdla MacOS w znalezionym na MacOS; Myślę, że shasumjest częścią standardowej dystrybucji Perla - instalowanej wraz z np perl. Poleceniem.

sidehowbarker
źródło
19

Spróbuj tego:

hexdump -C <<< test

Znając powłoki uniksowe, prawdopodobnie otrzymujesz niechciane 0x0a na końcu tego ciągu.

Spiff
źródło
2
odoznaczy znaki kontrolne i uczyni je bardziej widocznymi; try: od -t a -t x1 <<< test(tak naprawdę nigdy nie używał
zrzutu heksadecymalnego