Bir dosyanın sha256 karmasını kontrol etmek için bir cli gerekli


127

Kullanacağım bir dosyanın openssl sha1 <file>sha1'ini kontrol etmek için dosyanın sha256 karmasını kontrol etmek için ne kullanacağımdan emin değilim, ne önerirsiniz?

Yanıtlar:


156

Kullanabilirsiniz

openssl dgst -sha256 <file>

MacOS 10.14 (Mojave) üzerindeki LibreSSL 2.6.4'te test edilmiştir.


Mojave'den önce openssl sha -sha256 <file>veya kullanabilirsiniz openssl sha256 <file>.

Openssl sha komutu için komut satırı seçeneklerini kontrol etmek için: openssl sha -help.


Bu aynı zamanda taşınabilir ve ubuntu üzerinde çalışır.
Christian Bongiorno

86

OS X, bir shasum komutuyla birlikte gelir .

> which shasum
/usr/bin/shasum

Kullanabilirsiniz:

> shasum -a 256 <file>

Daha fazla detay:

> 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

Hmm, osx 10.11.3'te görünmüyor. which shashumhiçbir şey
çıkmaz

3
@erikvold Neyi biliyorsun? Bahse girerim Xcode Komut Satırı araçlarıyla aldım. Argh. Gerçekten Apple'ın /usr/binisteğe bağlı şeylerle kirlenmemesini diliyorum . Bugün olayın böyle olduğunu doğrulamalıyım. Eğer gerçekten XCL kurulumundan geldiyse cevabı güncelleyecektir.
Ian C.

2
shasumfarklı bir karma döndürür openssl sha -sha256 <file>(ikincisi doğru karma olur). Neden bir fikrin var mı?
ws6079,

@ ws6079 shasum, bir perl betiğidir, Digest::SHAkarma değerini hesaplamak için kullanılır. Aynı dosya için ben de kullanarak tam olarak aynı SHA olsun shasumveya opensslbir için SHA-256karma hesaplama. Bakınız: gist.github.com/ianchesal/82a064b8971eb5e717ce84f3ded6dbfd
Ian C.

shasum bugün benim için harika çalışıyor.
nycynik

7

shasumBir süredir OSX ile komut gelir. Bu aynı sonucu verecektir openssl sha -sha256kullanırken shasumkullanarak -a 256seçeneği.


6

@ John'un yararlı cevabını açıklığa kavuşturmak için - verilen bir hash ile tek bir komutta dosyasını karşılaştırmanızı sağlar:

Giriş shasum -a 256 -c <<<,
isteğe bağlı bir boşluk ve ardından
tek bir kene (ardından '),
karşılaştırma karma, ardından
, bir boşluk ve ardından
ilk karma nasıl oluşturulduğuna göre, bir modu karakteri bunu takiben

  • karma, -tseçenekle veya seçenek olmadan oluşturulduysa, hiçbir şey (metin modu, varsayılandır)

  • Yıldız işareti ( *), eğer hash -b(binary mode) ile yaratılmışsa

  • soru işareti ( ?), karma -p(taşınabilir mod) ile oluşturulmuşsa

  • caret ( ^), karma -0(bit modu) ile oluşturulmuşsa

ardından dosya yolunu
izledi , ardından bir kapanış tekli kene ( ').

Aşağıdaki arıza gibi, hash ve filepath parçalarının çevresini sınırlandıran parenler ve isteğe bağlı "mod karakteri" kısmı etrafındaki köşeli parantezler. ( Parenleri veya braketleri gerçek hayata dahil etmeyin - parçaları görmeyi kolaylaştırmak için buradalar! )

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

Bozuldu :

Asıl shasum komutushasum -a 256 -c

  • -a 256söyler shasumkullanmak SHA256 .

  • -cshasumsağlanan girişi "kontrol" etmesini söyler .

<<<Bir "yönlendirme" operatörü olarak adlandırılan bir Unix / Linux özel karakter setidir. Önceden bir komuta bir şey beslemek için. Kullanarak, shasumkomutun girdi olarak kullanması için bir dizi bilgi sağlayacağımızı söylüyoruz .

Giriş bilgisi dizesinin, açılacak ve kapanması gereken tek keneler ( 'some string here'veya bu durumda kontrol edilecek karma, mod karakteri ve dosya yolu) olması gerekir.

  • Karma dize içinde parçası özel bir şey gerekmez - ama bir boşluk gelmelidir.

  • Mod karakter parçası şey, bir yıldız (olabilir *), bir soru işareti ( ?) veya bir şapka ( ^). Bu shasum, karma değerin üretildiği modu söyler . (Not: metin modunu temsil eden hiçbir karakter shasumvarsayılan değildir.)

  • Filepath kısmı dosyaya fiili yolu kontrol edilmelidir.


Bu nedenle, söz konusu SHA-256 değerine karşı belirli bir MAMP indirme dosyasını kontrol eden gerçek hayattan bir örnek . Mod karakter çalışması için bu kontrol için gerekli:*

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

Not: Bu komutun sonucu (örnek dosyam için) ya -

TAMAM:

MAMP_MAMP_PRO_5.2.pkg: Tamam

veya

BAŞARISIZ OLDU:

MAMP_MAMP_PRO_5.2.pkg:
Başarısız shasum: UYARI: 1 hesaplanan sağlama toplamı eşleşmedi


Benim için bu, dosya adından önce yıldız işareti olmadan da (yıldız işaretiyle birlikte) çalışır.
Peter W

shasum -c <<< '7cb77378a0749f2a9b7e09ea62ffb13febf3759f *sample.txt'mesajı döndürür *sample.txt: FAILED open or read. Yıldız olmadan sample.txt: OK. Yıldızın henüz başka bir yerde kullanımının temelini bulamadım. Aydınlatabilir misin?
SoFarther

Yıldızın varlığı, örnekte girdi olarak kullanılan sağlama toplamının ikili modda ( --binaryisteğe bağlı olarak) oluşturulduğunu gösteriyor mu? Man sayfasından: "Kontrol yapılırken, giriş bu programın eski bir çıktısı olmalıdır. Varsayılan mod, sağlama karakterini içeren bir karakter, türünü belirten bir karakter yazdırmaktır ( *ikili metin için,` `metin Uiçin, UNIVERSAL ^için, BITS, ?taşınabilir için) ve her DOSYA için ad. " Yani, sağlama toplamı ve dosya adı arasındaki karakterler sağlama toplamı oluşturulduğunda ayarlanan moda mı bağlı?
SoFarther

@SoFarther: evet, haklısın. Bu fikri kanıtlamak için yapılan bir denemeden sonra, "mod" özelliğini açıklığa kavuşturmak için gönderimi güncelledim.
leanne

6

Bu komutu kullanırdım.

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

Örnek:

shasum -a 256 -c <<< '0d2ea6de4f2cbd960abb6a6e020bf6637423c07242512596691960fcfae67206 */Users/USERNAME/Downloads/someprogram.dmg'
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.