लिनक्स कमांड लाइन से SHA-256 हैश उत्पन्न करना


234

मुझे पता है कि स्ट्रिंग "फोब्बर" SHA-256 हैश c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2का उपयोग करता है http://hash.online-convert.com/sha256-generator

हालाँकि कमांड लाइन शेल:

hendry@x201 ~$ echo foobar | sha256sum
aec070645fe53ee3b3763059376134f058cc337247c978add178b6ccdfb0019f  -

एक अलग हैश उत्पन्न करता है। मैं क्या खो रहा हूँ?


4
sha256sum < foobarबिल्ली , गूंज , प्रिंटफ के लिए कोई ज़रूरत नहीं है , ... बिल्ली का बेकार उपयोग
कोपरप्स

7
@koppor < foobarके समान नहीं है echo foobar |। के लिए बराबर echo foobar |होगा, sha256sum <<< foobarलेकिन यह बिल्कुल की तरह foobar के लिए एक नई पंक्ति जोड़ देता है echo
15

openssl dgst -sha256 foobarMacOS हाई सिएरा पर मेरे लिए काम करता है, जबकि echo -n foobar | openssl dgst -sha256एक गलत जवाब दिया।
शुभ

जवाबों:


362

echoआम तौर पर एक नई पंक्ति का उत्पादन करेगा, जो के साथ दबा हुआ है -n। इसे इस्तेमाल करे:

echo -n foobar | sha256sum

76
नोट: OS X (BSD) पर, यहecho -n foobar | shasum -a 256
ओली

6
बस उपयोग printf;)
dylnmc

11
OSX पर, एक उपनाम बनाना आसान हो सकता है:alias sha256sum='shasum --algorithm 256'
जोनाथन क्रॉस

1
इसका अंत * * से क्यों होता है
फिलिप रीगो

2
@PhilipRego यह स्टडिन पर इनपुट का श्सम है, इसलिए फ़ाइल नाम के बजाय -मुद्रित किया जाता है।
MVDS

100

यदि आपने स्थापित किया है openssl, तो आप उपयोग कर सकते हैं:

echo -n "foobar" | openssl dgst -sha256

अन्य एल्गोरिदम के लिए आप की जगह ले सकता -sha256के साथ -md4, -md5, -ripemd160, -sha, -sha1, -sha224, -sha384, -sha512या -whirlpool


क्या आप sha512 में जितने राउंड की संख्या निर्दिष्ट करना चाहते हैं? मैंने देखा और उसे ढूंढ नहीं पाया और सोच रहा था कि क्या आप जानते हैं?
f1lt3r

1
@AlistairMacDonald - मुझे ठीक से नहीं पता कि आप क्या देख रहे हैं। AFAIK, SHA512 को 80 राउंड की जरूरत है; यदि आप फ़ंक्शन में हेरफेर करना चाहते हैं, तो यह अब sha512 नहीं होगा। BTW, आप crypto.stackexchange.com में अपने प्रश्न को खोज / पूछ सकते हैं ।
फरहमानंद

3
स्वीकृत उत्तर के विपरीत, यह MacOS के लिए काम करता है।
weefwefwqg3

45

यदि कमांड sha256sum उपलब्ध नहीं है ( उदाहरण के लिए Mac OS X v10.9 (Mavericks) पर), तो आप इसका उपयोग कर सकते हैं:

echo -n "foobar" | shasum -a 256


1
अच्छा! मैंने इसे अपने .bash_profile फ़ंक्शन sha256 () {echo -n "$ *" में जोड़ दिया है shasum -a 256} और जैसे कॉल करें: ~ $
sha256

स्वीकृत उत्तर के विपरीत, यह MacOS के लिए काम करता है
weefwefwqg3

या क्या आप Ubuntu 10.10 (Maverick Meerkat) से मतलब रखते हैं ? (नो 'एस', मावरिक )। यह 2010 में जारी किया गया था जबकि मैक ओएस एक्स v10.9 इस उत्तर से एक महीने पहले जारी किया गया था।
पीटर मोर्टेंसन

29

echo -nकाम करता है और बड़े पैमाने पर ऐतिहासिक उपयोग के कारण कभी भी गायब होने की संभावना नहीं है, हालांकि POSIX मानक के हालिया संस्करणों के अनुसार , नए अनुरूप अनुप्रयोगों को "उपयोग करने के लिए प्रोत्साहित किया जाता है printf"।



7

मेरा मानना ​​है कि echoएक अनुगामी न्यूलाइन को आउटपुट करता है। -nन्यूलाइन को छोड़ने के लिए प्रतिध्वनि के रूप में उपयोग करने का प्रयास करें ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.