एक फ़ाइल के sha256 हैश की जाँच करने के लिए एक cli की आवश्यकता है


127

किसी फ़ाइल के sha1 की जाँच करने के लिए openssl sha1 <file>मैं उपयोग करूँगा मुझे यकीन नहीं है कि फ़ाइल के sha256 हैश की जाँच करने के लिए क्या उपयोग करना है, लेकिन आप क्या सुझाएंगे?

जवाबों:


156

आप उपयोग कर सकते हैं

openssl dgst -sha256 <file>

MacOS 10.14 (Mojave) पर LibreSSL 2.6.4 पर परीक्षण किया गया।


Mojave से पहले आप उपयोग कर सकते हैं openssl sha -sha256 <file>या openssl sha256 <file>

खुलता शाल कमांड के लिए कमांड लाइन विकल्प की जांच करने के लिए openssl sha -help:।


यह भी पोर्टेबल है और ubuntu पर चलता है।
क्रिश्चियन बोंजीओनो 20

86

ओएस एक्स एक शसम कमांड के साथ जहाज ।

> which shasum
/usr/bin/shasum

आप उपयोग कर सकते हैं:

> shasum -a 256 <file>

अधिक जानकारी:

> 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

हम्म मैं ऐसा लगता नहीं है कि यह OSX 10.11.3 पर है। which shashumआउटपुट कुछ नहीं
मिटा दें

3
@erikvold तुम्हें पता है क्या? मुझे यकीन है कि मुझे Xcode कमांड लाइन टूल के साथ मिला है। अरे। मैं वास्तव में कामना करता हूं कि Apple /usr/binवैकल्पिक सामान के साथ प्रदूषित नहीं करेगा । मुझे यह सत्यापित करना होगा कि आज बाद में मामला है। यदि यह वास्तव में XCL इंस्टॉल से आया है तो उत्तर को अपडेट करेगा।
इयान सी

2
shasumकी तुलना में एक अलग हैश देता है openssl sha -sha256 <file>(बाद वाला सही हैश है)। कोई विचार क्यों?
ws6079

@ ws6079 shasumएक पर्ल स्क्रिप्ट है, Digest::SHAहैश मान की गणना करने के लिए उपयोग करता है। एक ही फाइल के लिए मैं या तो का उपयोग कर ठीक उसी SHA पाने shasumया opensslएक के लिए SHA-256हैश गणना। देखें: gist.github.com/ianchesal/82a064b8971eb5e717ce84f3ded6dbfd
इयान सी

shahsum आज मेरे लिए बहुत अच्छा काम कर रहा है।
nycynik

7

shasumआदेश अब थोड़ी देर के लिए साथ OSX जहाज। यह विकल्प का openssl sha -sha256उपयोग shasumकरते समय समान परिणाम देगा -a 256


6

@ जॉन के उपयोगी उत्तर को स्पष्ट करने के लिए - जो आपको दिए गए हैश की तुलना एक कमांड में अपनी फाइल से करने की अनुमति देता है:

दर्ज करें shasum -a 256 -c <<<,
एक वैकल्पिक स्थान,
उसके बाद एक एकल टिक ( '),
उसके बाद हैश द्वारा तुलना करना,
उसके बाद एक स्थान,
उसके बाद एक मोड चरित्र, जिसके आधार पर प्रारंभिक हैश उत्पन्न किया गया था:

  • कुछ नहीं , अगर हैश के साथ -tया कोई विकल्प नहीं बनाया गया था (पाठ मोड, जो डिफ़ॉल्ट है)

  • तारांकन चिह्न ( *), यदि हैश -b(बाइनरी मोड) के साथ बनाया गया था

  • प्रश्न चिह्न ( ?), अगर हैश -p(पोर्टेबल मोड) के साथ बनाया गया था

  • कैरट ( ^), अगर हैश -0(बिट्स मोड) के साथ बनाया गया था

फ़ाइल के पथ के
बाद , एक समापन एकल टिक ( ') के बाद।

निम्न टूटने की तरह, हैश और फाइलपैथ भागों के आसपास परिमार्जन के साथ, और वैकल्पिक "मोड चरित्र" भाग के चारों ओर चौकोर कोष्ठक। ( वास्तविक जीवन में पार्न्स या कोष्ठक शामिल न करें - वे सिर्फ यहाँ हैं ताकि भागों को आसानी से देखा जा सके! )

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

टूट गया :

वास्तविक shasum कमांड हैshasum -a 256 -c

  • -a 256बताता है shasumउपयोग करने के लिए SHA256

  • -cshasumप्रदान किए गए इनपुट को "जांचना" बताता है।

<<<एक यूनिक्स / लिनक्स विशेष वर्ण सेट, एक "पुनर्निर्देशन" ऑपरेटर कहा जाता है। यह किसी पूर्व आज्ञा में कुछ खिलाने के लिए है। इसका उपयोग करके, हम कह रहे हैं कि हम shasumइनपुट के रूप में उपयोग करने के लिए कमांड के लिए सूचना की एक स्ट्रिंग प्रदान करने जा रहे हैं ।

इनपुट जानकारी की स्ट्रिंग में एकल टिक्स खोलने और बंद करने की आवश्यकता होती है, जैसे कि 'some string here', या इस मामले में, हैश, मोड कैरेक्टर और फ़ाइलपैथ की जाँच की जानी चाहिए।

  • हैश स्ट्रिंग के अंदर हिस्सा कुछ विशेष की जरूरत नहीं है - लेकिन यह एक रिक्ति से पालन किया जाना चाहिए।

  • मोड चरित्र हिस्सा कुछ भी नहीं, तारांकित (हो सकता है *), एक प्रश्न चिह्न ( ?), या एक कैरट ( ^)। यह shasumउस मोड को बताता है जिसके साथ हैश उत्पन्न किया गया था। (नोट: कोई भी चरित्र, पाठ मोड का प्रतिनिधित्व करने वाला, shasumडिफ़ॉल्ट नहीं है।)

  • Filepath हिस्सा है, फाइल करने के लिए वास्तविक पथ जांच की जानी है।


इसलिए, यहां एक वास्तविक जीवन का उदाहरण एक विशेष MAMP डाउनलोड फ़ाइल की जाँच कर रहा है, जिसके विरुद्ध SHA-256 मूल्य है। *मोड चरित्र काम करने के लिए इस चेक के लिए आवश्यक किया गया था:

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

नोट: इस आदेश का परिणाम (मेरी उदाहरण फ़ाइल के लिए) या तो है -

ठीक:

MAMP_MAMP_PRO_5.2.pkg: ठीक है

या

अनुत्तीर्ण होना:

MAMP_MAMP_PRO_5.2.pkg: विफल
शमस: चेतावनी: 1 संगणित चेकसम मेल नहीं खाते


मेरे लिए यह फ़ाइल नाम से पहले तारांकन के बिना काम करता है (साथ ही तारांकन के साथ)।
पीटर डब्ल्यू

shasum -c <<< '7cb77378a0749f2a9b7e09ea62ffb13febf3759f *sample.txt'संदेश देता है *sample.txt: FAILED open or read। तारांकन के बिना, sample.txt: OK। मैं अभी तक कहीं और तारांकन के उपयोग का आधार नहीं खोज सका हूं। क्या आप स्पष्ट कर सकते हैं?
SoFarther

क्या तारांकन की उपस्थिति इंगित करती है कि उदाहरण में इनपुट के रूप में उपयोग किया जाने वाला चेकसम बाइनरी मोड ( --binaryविकल्प के साथ ) में उत्पन्न हुआ था ? मैन पेज से: "चेक करते समय, इनपुट इस प्रोग्राम का एक पूर्व आउटपुट होना चाहिए। डिफ़ॉल्ट मोड चेकसम के साथ एक लाइन प्रिंट करने के लिए है, एक चरित्र जो इंगित करता है टाइप ( *बाइनरी के लिए,` `टेक्स्ट के Uलिए, ^BITS के लिए , UNIVERSAL के लिए) ?पोर्टेबल के लिए), और प्रत्येक फ़ाइल के लिए नाम। " तो, चेकसम और फ़ाइल नाम के बीच के वर्ण, चेकसम निर्मित होने पर निर्धारित मोड पर निर्भर करते हैं?
SoFarther

@SoFarther: हाँ, आप सही कह रहे हैं। उस विचार को साबित करने के लिए कुछ प्रयोग के बाद, मैंने "मोड" पहलू को स्पष्ट करने के लिए अपनी पोस्ट अपडेट की है।
झुकना

6

मैं इस कमांड का उपयोग करूंगा।

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

उदाहरण:

shasum -a 256 -c <<< '0d2ea6de4f2cbd960abb6a6e020bf6637423c07242512596691960fcfae67206 */Users/USERNAME/Downloads/someprogram.dmg'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.