Menghasilkan hash SHA-256 dari baris perintah Linux

234

Saya tahu string "foobar" menghasilkan hash SHA-256 c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2menggunakan http://hash.online-convert.com/sha256-generator

Namun shell baris perintah:

hendry@x201 ~$ echo foobar | sha256sum
aec070645fe53ee3b3763059376134f058cc337247c978add178b6ccdfb0019f  -

Menghasilkan hash yang berbeda. Apa yang saya lewatkan?

hendry
sumber
4
sha256sum < foobar. Tidak perlu untuk kucing , gema , printf , ... Lihat juga Penggunaan kucing yang tidak berguna?
koppor
7
@koppor < foobartidak sama dengan echo foobar |. Setara dengan echo foobar |akan sha256sum <<< foobartetapi menambahkan baris baru untuk foobar seperti echo.
mvds
openssl dgst -sha256 foobarbekerja untuk saya di MacOS High Sierra, sedangkan echo -n foobar | openssl dgst -sha256memberikan jawaban yang salah.
auspicious99

Jawaban:

362

echobiasanya akan menampilkan baris baru, yang ditekan dengan -n. Coba ini:

echo -n foobar | sha256sum
mvds
sumber
76
CATATAN: pada OS X (BSD), iniecho -n foobar | shasum -a 256
Olie
6
cukup gunakan printf;)
dylnmc
11
Di OSX, mungkin berguna untuk membuat alias:alias sha256sum='shasum --algorithm 256'
Jonathan Cross
1
Mengapa ini berakhir dengan * -
Philip Rego
2
@ PhilipRego Ini adalah shasum input pada stdin, oleh karena itu alih-alih nama file -dicetak.
mvds
100

Jika sudah diinstal openssl, Anda dapat menggunakan:

echo -n "foobar" | openssl dgst -sha256

Untuk algoritma lain yang dapat menggantikan -sha256dengan -md4, -md5, -ripemd160, -sha, -sha1, -sha224, -sha384, -sha512atau -whirlpool.

Farahmand
sumber
Apakah ada cara untuk menentukan jumlah putaran yang Anda inginkan di sha512? Saya melihat dan tidak dapat menemukannya dan bertanya-tanya apakah Anda akan tahu?
f1lt3r
1
@AlistairMacDonald - Saya tidak tahu persis apa yang Anda cari. AFAIK, SHA512 membutuhkan 80 putaran; Jika Anda ingin memanipulasi fungsi, itu tidak akan sha512 lagi. BTW, Anda dapat mencari / menanyakan pertanyaan Anda di crypto.stackexchange.com .
Farahmand
3
Berbeda dengan jawaban yang diterima, ini bekerja untuk MacOS.
weefwefwqg3
45

Jika perintah sha256sum tidak tersedia (pada Mac OS X v10.9 (Mavericks) misalnya), Anda dapat menggunakan:

echo -n "foobar" | shasum -a 256

Sucrenoir
sumber
1
Bagus! Saya telah menambahkan ini ke fungsi .bash_profile saya sha256 () {echo -n "$ *" | shasum -a 256} dan telepon seperti: ~ $ sha256 foobar
rbento
Tidak seperti jawaban yang diterima, ini bekerja untuk MacOS
weefwefwqg3
Atau maksud Anda Ubuntu 10.10 (Maverick Meerkat) ? (tidak ada, Maverick ). Ini dirilis pada 2010 sedangkan Mac OS X v10.9 dirilis satu bulan sebelum jawaban ini.
Peter Mortensen
29

echo -nberfungsi dan tidak mungkin hilang karena penggunaan historis yang masif, namun per versi terbaru dari standar POSIX , aplikasi yang sesuai baru "didorong untuk digunakan printf".

Nicholas Knight
sumber
8

echomenghasilkan karakter baris baru yang hash juga. Mencoba:

/bin/echo -n foobar | sha256sum 
Mainframe Nordik
sumber
7

Saya percaya bahwa echomenghasilkan baris baru. Coba gunakan -nsebagai parameter untuk menggema untuk melewati baris baru.

Thomas Owens
sumber