एईएस कुंजी उत्पन्न करने के लिए ओपनएसएसएल हैश फ़ंक्शन


8

AES-256 के लिए एक कुंजी उत्पन्न करने के लिए OpenSSL का उपयोग क्या हैश फ़ंक्शन करता है? मैं इसे उनके प्रलेखन में कहीं भी नहीं ढूँढ सकता।

$ touch file
$ openssl aes-256-cbc -nosalt -P -in file

enter aes-256-cbc encryption password: (I type "a" and hit enter)
Verifying - enter aes-256-cbc encryption password: (I type "a" and hit enter)

key=0CC175B9C0F1B6A831C399E269772661CEC520EA51EA0A47E87295FA3245A605
iv =4FA92C5873672E20FB163A0BCB2BB4A4

कौन सा हैश एल्गोरिथ्म key=दूसरी आखिरी लाइन पर इनपुट "ए" के बाद अनसाल्टेड हैश उत्पन्न करता है ?

जवाबों:


9

बहुत यकीन है कि यह एक SHA1 डाइजेस्ट एल्गोरिथ्म है, लेकिन सभी ईमानदारी में मैं 100% निश्चितता के साथ नहीं कह सकता।

और किसने सोचा होगा कि कुछ जो मोटापे को बढ़ाने के लिए डिज़ाइन किया गया है, उसके पास मोटे निर्देश होंगे;)

संपादित करें: यह आपकी परिस्थितियों में सहायक नहीं हो सकता है, लेकिन मुझे लगता है कि आप हमेशा ऐसा करके जान सकते हैं

openssl enc -d -a -md sha1 -aes-256-cbc -nosalt -p 

मैंने निर्धारित किया है कि यह डिफ़ॉल्ट रूप से एमडी 5 का उपयोग करता है, जब मैं आपकी कमांड का उपयोग करता हूं (सिडेनोट: उन विकल्पों में से कोई भी दाना पेज में प्रलेखित नहीं है ...) के md5बजाय sha1, मुझे मूल रूप से पोस्ट किए गए समान परिणाम मिलते हैं। सवाल यह है कि यह एमडी 5 (एक 128-बिट हैशिंग एल्गोरिथ्म) से 256 बिट कैसे प्राप्त करता है?
mk12

इसका एक तरीका यह है कि दो असमान एमडी 5 को द्विआधारी रूप में समाहित करने के परिणामस्वरूप, जिसके परिणामस्वरूप 256 बिट कुंजी होती है। इसके लिए कुछ अन्य तरीके भी हैं। आप php पैकेज "md5_base64" देख सकते हैं। यहां तक ​​कि अगर आप एक php आदमी नहीं हैं, डॉक्स सुंदर जानकारीपूर्ण हैं।
Snesticle

4

यह दो एमडी 5 हैश का एक संयोजन है।

यह इस तरह से व्युत्पन्न है:

128bit_Key = MD5(Passphrase + Salt)
256bit_Key = 128bit_Key + MD5(128bit_Key + Passphrase + Salt)

आप ऐसा करके देख सकते हैं:

$ echo Testing > file
$ openssl enc -aes-256-cbc -p -in file -out file.aes -salt
: enter aes-256-cbc encryption password: abc
: Verifying - enter aes-256-cbc encryption password: abc
: salt=3025373CA0530C93
: key=E165475C6D8B9DD0B696EE2A37D7176DFDF4D7B510406648E70BAE8E80493E5E
: iv =B030394C16C76C7A94DC22FDDB6B0744
$ perl -e 'print pack "H*", "3025373CA0530C93"' > salt
$ echo -n abc > passphrase
$ cat passphrase > key.128.tmp
$ cat salt >> key.128.tmp
$ md5sum key.128.tmp 
: e165475c6d8b9dd0b696ee2a37d7176d  key.128.tmp
$ perl -e 'print pack "H*", "e165475c6d8b9dd0b696ee2a37d7176d"' > key.128
$ cat key.128 > key.256.tmp
$ cat passphrase >> key.256.tmp
$ cat salt >> key.256.tmp
$ md5sum key.256.tmp 
: fdf4d7b510406648e70bae8e80493e5e  key.256.tmp

ध्यान दें कि दोनों 'MD.128.tmp' के MD5 और 'key.256.tmp' दोनों एक साथ आरंभिक कमांड में आउटपुट के रूप में एक ही कुंजी बनाते हैं।


और यदि आप एक तीसरा पुनरावृत्ति करते हैं तो आपको IV मिलेगा। यह मामला सुविधाजनक है क्योंकि कुंजी और डेटा = IV आकार (256 और 128 बिट) दोनों हैश आउटपुट के सटीक गुणक हैं; सामान्य तौर पर आप हैश आउटपुट को संक्षिप्त करते हैं और कुंजी के लिए पहले K बिट्स और IV के लिए अगले D बिट्स लेते हैं।
dave_thompson_085 21

अद्यतन: डिफ़ॉल्ट md5 हुआ करता था, लेकिन 2016 में 1.1.0 के रूप में यह sha256 है। पूर्ण विवरण crypto.stackexchange.com/questions/3298/…
dave_thompson_085

2

ओपनएसएसएल SHA1 के साथ एईएस का उपयोग करता है।

यदि आप ओपनएसएसएल की तुलना में बेहतर लिखित स्रोत की जांच करना चाहते हैं, तो लेख
सी ++ वर्ग पर एक नज़र डालें जो ओपनएसएसएल सिफर्स के लिए इंटरफेस करता है

लेख में बहुत सरल स्रोत कोड शामिल हैं:

आपको OpenSSL AES-256-CBC सिफर और SHA1 डाइजेस्ट एल्गोरिदम का उपयोग करके फ़ाइलों या स्ट्रिंग्स को एन्क्रिप्ट और डिक्रिप्ट करने की अनुमति देता है। यह ओपनसेल कमांड लाइन टूल के साथ इंटरऑपरेबल है, जो इसे सिफर्स के लिए ओपनएसएसएल का उपयोग करने के लिए एक अच्छा परिचय बनाता है।


1

मुझे इसका उत्तर नहीं पता है, लेकिन आप शायद ओपनएसएसएल स्रोत कोड में इसे आसानी से पा सकते हैं ।


2
"आसानी से पर्याप्त" - mainफ़ंक्शन (जहां पासवर्ड-पूछ कार्यशीलता रहती है) ~ 500 लाइनें लंबी और gotoएस के साथ लिटर्ड हैं ।
mk12

5
वाह। मैंने सिर्फ सोर्स कोड को देखा। यह वास्तव में अपठनीय है। कोई टिप्पणी नहीं। एक अक्षर का चर नाम। ओह। मुझे क्षमा करें मैंने सुझाव दिया है कि
Fran
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.