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?


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

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.


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


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".


8

echomenghasilkan karakter baris baru yang hash juga. Mencoba:

/bin/echo -n foobar | sha256sum 

7

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.