Mengapa saya mendapatkan hasil yang berbeda dari shasum Mac daripada dari kalkulator shasum lainnya?

13

Saya masuk:

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

Dan hasilnya adalah:

0e3e75234abc68f4378a86b3f4b32a198ba301845b0cd6e50106e874345700cc6663a86c1ea125dc5e92be17c98f9a0f85ca9d5f595db2012f7cc3571945c123  -

Lalu saya pergi ke beberapa generator hash online dan masukkan "test" juga. Jawaban mereka adalah:

http://hashgenerator.de/ :

ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff

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

EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF

Jadi generator online setuju. Apa yang saya lewatkan pada perintah konsol Mac?

Saya sedang membaca manhalaman - halamannya. Saya melihat itu diimplementasikan menggunakan perpustakaan Perl. Namun, saya pikir sha512 akan menjadi sebutan yang unik, jadi saya harus menggali lebih dalam.


Tampaknya ada pertanyaan duplikat: Mengapa hash baris perintah saya berbeda dari hasil hash MD5 online? . Sementara pertanyaan lain berada dalam konteks yang sama, yang merupakan ruang kosong yang tidak terduga, ia muncul dari situasi yang berbeda.

  • <<<adalah string di sini , dan ada pilihan desain untuk bagaimana string di sini menambahkan baris baru.
  • echo 'bla' |berarti pemipaan, yang memanggil sub shell, dan juga memiliki argumen untuk bagaimana menangani baris baru. Di sini sepertinya Anda harus mempertimbangkan versi shell .
peter_the_oak
sumber
Terima kasih banyak untuk sontonbarker dan Spiff. Whitespace beraksi lagi ^^ ^^
peter_the_oak
Perhatikan bahwa string di sini dimaksudkan persis sama dengan dokumen satu baris di sini, dan dokumen di sini selalu berakhir dengan baris baru.
chepner
Saya bukan orang baru di shell, tapi di sini ada beberapa detail dan berita canggih yang saya syukuri. Jadi terima kasih atas semua komentar dan jawabannya.
peter_the_oak
Jadi kami menemukan bahwa perintah shasum Mac tidak berbeda. Masalahnya secara teknis adalah kesalahan pengguna, dan harus dilakukan dengan data yang dikirimkan, bukan program. Bolehkah saya menyarankan mengubah nama pertanyaan, menjadi "Mengapa saya mendapatkan hasil yang berbeda dari shasum Mac ..." Dengan begitu, orang dapat langsung menduga masalah yang dibuat pengguna. (Seandainya saya melihat itu, saya mungkin kurang tertarik untuk memeriksa pertanyaan ini sekarang. Seperti saat ini berjudul, "Apa yang membedakan mac shell shasum dari kalkulator shasum lain?", Saya datang ke sini untuk mempelajari tentang kemungkinan perbedaan spesifik Mac, yang sebenarnya tidak seperti ini
TOOGAM

Jawaban:

32

Masukan untuk shasumdoa dalam pertanyaan adalah test\n(dengan baris baru), bukan test.

Jika Anda memberi testtanpa baris baru, shasumAnda akan mendapatkan hasil yang sama dengan alat daring yang Anda kutip:

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

By the way, saya pikir tidak ada yang khusus atau MacOS-spesifik tentang yang shasumditemukan di MacOS; Saya pikir shasumini adalah bagian dari distro Perl standar — dipasang bersama, misalnya, perlperintah.

sontonbarker
sumber
19

Coba ini:

hexdump -C <<< test

Mengetahui shell Unix, Anda mungkin mendapatkan 0x0a yang tidak diinginkan di akhir string itu.

Spiff
sumber
2
odakan melabeli karakter kontrol dan membuatnya lebih jelas; coba: od -t a -t x1 <<< test(tidak pernah menggunakan hexdump),
toddkaufmann