Butuh cli untuk memeriksa hash file

127

Untuk memeriksa sha1 file yang akan saya gunakan, openssl sha1 <file>saya tidak yakin apa yang harus digunakan untuk memeriksa hash sha256 file tersebut, apa yang akan Anda rekomendasikan?

erikvold
sumber

Jawaban:

156

Anda dapat gunakan

openssl dgst -sha256 <file>

Diuji pada LibreSSL 2.6.4 pada macOS 10.14 (Mojave).


Sebelum Mojave, Anda dapat menggunakan openssl sha -sha256 <file>atau openssl sha256 <file>.

Untuk memeriksa opsi baris perintah untuk openssl perintah sha: openssl sha -help.

janm
sumber
Ini juga portabel dan berjalan di ubuntu.
Christian Bongiorno
86

OS X dikirimkan dengan perintah shasum .

> which shasum
/usr/bin/shasum

Anda dapat gunakan:

> shasum -a 256 <file>

Keterangan lebih lanjut:

> shasum --help
Usage: shasum [OPTION]... [FILE]...
Print or check SHA checksums.
With no FILE, or when FILE is -, read standard input.

  -a, --algorithm   1 (default), 224, 256, 384, 512, 512224, 512256
  -b, --binary      read in binary mode
  -c, --check       read SHA sums from the FILEs and check them
  -t, --text        read in text mode (default)
  -p, --portable    read in portable mode
                        produces same digest on Windows/Unix/Mac
  -0, --01          read in BITS mode
                        ASCII '0' interpreted as 0-bit,
                        ASCII '1' interpreted as 1-bit,
                        all other characters ignored

The following two options are useful only when verifying checksums:
  -s, --status      don't output anything, status code shows success
  -w, --warn        warn about improperly formatted checksum lines

  -h, --help        display this help and exit
  -v, --version     output version information and exit

When verifying SHA-512/224 or SHA-512/256 checksums, indicate the
algorithm explicitly using the -a option, e.g.

  shasum -a 512224 -c checksumfile

The sums are computed as described in FIPS-180-4.  When checking, the
input should be a former output of this program.  The default mode is to
print a line with checksum, a character indicating type (`*' for binary,
` ' for text, `?' for portable, `^' for BITS), and name for each FILE.

Report shasum bugs to mshelor@cpan.org
Ian C.
sumber
Hmm saya sepertinya tidak memilikinya di osx 10.11.3. which shashumtidak menghasilkan apa
erikvold
3
@ erikvold Anda tahu? Saya yakin saya dapat dengan alat-alat Baris Perintah Xcode. Argh. Saya benar-benar berharap Apple tidak akan mencemari /usr/binbarang-barang opsional. Saya harus memverifikasi ini yang terjadi hari ini. Akan memperbarui jawaban jika memang berasal dari instalasi XCL.
Ian C.
2
shasummengembalikan hash yang berbeda dari openssl sha -sha256 <file>(dengan yang terakhir menjadi hash yang benar). Ada yang tahu kenapa?
ws6079
@ ws6079 shasumadalah skrip perl, digunakan Digest::SHAuntuk menghitung nilai hash. Untuk file yang sama saya mendapatkan SHA yang sama persis menggunakan salah satu shasumatau openssluntuk SHA-256perhitungan hash. Lihat: gist.github.com/ianchesal/82a064b8971eb5e717ce84f3ded6dbfd
Ian C.
Shahsum bekerja sangat baik untuk saya hari ini.
nycynik
7

The shasumperintah kapal dengan OSX untuk sementara waktu sekarang. Ini akan memberikan hasil yang sama seperti openssl sha -sha256ketika menggunakan shasummenggunakan -a 256pilihan.

karl
sumber
6

Untuk mengklarifikasi jawaban berguna John - yang memungkinkan Anda untuk membandingkan hash yang diberikan dengan file dalam satu perintah:

Masukkan shasum -a 256 -c <<<,
diikuti oleh spasi opsional,
diikuti dengan centang tunggal ( '),
diikuti oleh hash untuk membandingkan,
diikuti oleh spasi,
diikuti oleh karakter mode, berdasarkan bagaimana hash awal dihasilkan:

  • tidak ada , jika hash dibuat dengan -tatau tanpa opsi (mode teks, yang merupakan default)

  • asterisk ( *), jika hash dibuat dengan -b(mode biner)

  • tanda tanya ( ?), jika hash dibuat dengan -p(mode portabel)

  • caret ( ^), jika hash dibuat dengan -0(mode bit)

diikuti oleh path ke file,
diikuti dengan tanda centang tunggal penutup ( ').

Seperti uraian berikut, dengan melukiskan parens di sekitar bagian hash dan filepath, dan tanda kurung siku di sekitar bagian "karakter mode" opsional. ( Jangan sertakan parens atau kurung dalam kehidupan nyata - mereka hanya di sini untuk membuat bagian-bagiannya mudah dilihat! )

shasum -a 256 -c <<< '(hashToCompare) [mode character](filepath)'

Rusak :

Perintah shasum yang sebenarnya adalahshasum -a 256 -c

  • -a 256memberitahu shasumuntuk menggunakan sha256 .

  • -cmemberitahu shasumuntuk "memeriksa" input yang disediakan.

Ini <<<adalah rangkaian karakter khusus Unix / Linux, yang disebut operator "redirection". Ini untuk memasukkan sesuatu ke perintah sebelumnya. Dengan menggunakannya, kami katakan kami akan memberikan serangkaian informasi untuk shasumperintah yang akan digunakan sebagai input.

String informasi input harus memiliki pembukaan dan penutupan kutu tunggal, seperti 'some string here', atau dalam hal ini, hash, karakter mode, dan filepath untuk diperiksa.

  • Bagian hash di dalam string tidak perlu sesuatu yang istimewa - tetapi harus diikuti oleh spasi.

  • Bagian karakter mode bisa berupa apa saja, tanda bintang ( *), tanda tanya ( ?), atau tanda sisipan ( ^). Ini memberitahu shasummode hash yang dihasilkan. (Catatan: sama sekali tidak ada karakter, mewakili mode teks, adalah shasumdefault.)

  • Bagian filepath , adalah jalur sebenarnya ke file yang akan diperiksa.


Jadi, inilah contoh kehidupan nyata memeriksa file unduhan MAMP tertentu terhadap nilai SHA-256 yang diklaim . The *karakter modus yang diperlukan untuk cek ini bekerja:

shasum -a 256 -c <<< 'f05ede012b8a5d0e7c9cf17fee0fa1eb5cd8131f3c703ed14ea347f25be11a28 *MAMP_MAMP_PRO_5.2.pkg'

Catatan: hasil dari perintah ini (untuk file contoh saya) adalah -

BAIK:

MAMP_MAMP_PRO_5.2.pkg: Oke

atau

GAGAL:

MAMP_MAMP_PRO_5.2.pkg: FAILED
shasum: PERINGATAN: 1 checksum yang dihitung tidak cocok

leanne
sumber
Bagi saya ini bekerja tanpa tanda bintang sebelum nama file (serta dengan tanda bintang).
Peter W
shasum -c <<< '7cb77378a0749f2a9b7e09ea62ffb13febf3759f *sample.txt'mengembalikan pesan *sample.txt: FAILED open or read. Tanpa tanda bintang sample.txt: OK,. Saya belum dapat menemukan dasar penggunaan tanda bintang di tempat lain. Bisakah Anda mengklarifikasi?
SoFarther
Apakah kehadiran tanda bintang menunjukkan bahwa checksum yang digunakan sebagai input dalam contoh dihasilkan dalam mode biner (dengan --binaryopsi)? Dari halaman manual: "Saat memeriksa, input harus menjadi output mantan dari program ini. Mode default adalah untuk mencetak baris dengan checksum, karakter yang menunjukkan jenis ( *untuk biner,` `untuk teks, Uuntuk UNIVERSAL, ^untuk BITS, ?untuk portable), dan nama untuk masing-masing FILE. " Jadi, karakter antara checksum dan nama file tergantung pada mode yang ditetapkan ketika checksum dibuat?
SoFarther
@SoFarther: ya, Anda benar. Setelah beberapa percobaan untuk membuktikan ide itu, saya telah memperbarui posting saya untuk mengklarifikasi aspek "mode".
leanne
6

Saya akan menggunakan perintah ini.

shasum -a 256 -c <<<'_paste hash to compare here_ *_path to file goes here_'

Contoh:

shasum -a 256 -c <<< '0d2ea6de4f2cbd960abb6a6e020bf6637423c07242512596691960fcfae67206 */Users/USERNAME/Downloads/someprogram.dmg'
John
sumber