bash एईएस 128-सीबीसी "खराब जादू संख्या" और "त्रुटि इनपुट इनपुट फ़ाइल"



encryption openssl (1)

यह openssl के साथ करने के लिए एक दर्द हो सकता है, क्योंकि openssl के एन्क्रिप्शन को पैडिंग के बारे में धारणाएं और प्रवेश किए गए पासवर्ड से नमकीन कुंजी प्राप्त करना है जिसे आपको जानबूझकर बंद करना है।

Pycon में ऐसा करना बहुत आसान है PyCrypto कहते हैं, जहां ये मान्यताओं नहीं बनाई गई हैं।

>>> import base64
>>> data = base64.b64decode('y2EdLtmNQsZkvwwf8jf3fM6c1thfzF0sQfblayGIBik=')
>>> from Crypto.Cipher import AES
>>> aes_crypter = AES.new('h4ckth1sk3yp4d16',  AES.MODE_CBC, data[:16])
>>> aes_crypter.decrypt(data[16:]) # this gives the encrypted secret.

यह openssl के साथ करना संभव है, लेकिन आपको बेस 64 एन्कोडेड डेटा को पढ़ना होगा - पहले 16 बाइट्स को बाहर निकालना और इसे अपने $IV रूप में याद रखें (इसे एन्कोडिंग के बाद हेक्स के लिए उम्मीद है कि openssl उम्मीद करता है), सभी बाइट्स पढ़ने शुरू करें पहले 16 के बाद और इसे $CIPHERTEXT रूप में याद रखें (और बेस 64 में पुनः सांकेतिक शब्दों में कहें) $KEY समान, आपको हेक्स में बाइट्स को एएससीआईआई से परिवर्तित करना होगा। यह मानते हुए कि आप इन चर में संग्रहीत करते हैं, तो निम्नलिखित काम करेंगे:

IV=`base64 -d part444.txt | xxd -p -l 16`
CIPHERTEXT=`base64 -d part444.txt | cut -b 17- | base64`
KEY=`echo -n h4ckth1sk3yp4d16 |xxd -p`

echo $CIPHERTEXT | openssl aes-128-cbc -d -a  -nopad -K $KEY -iv $IV && echo ""

base64 -d डीकोड बेस64 को द्विआधारी (जीएनयू कोरुल्ट्स से बेस 64 का उपयोग करना; बीएसडी पर base64 -D साथ बदलते हैं), base64 बी base64 एन्कोड्स बायनरी डेटा, cut -b 17- डेटा के 17 वें बाइट से फ़ाइल के अंत तक पढ़ता है, और xxd -p बाइनरी को हेक्स में कनवर्ट करता है

मैं एक फ़ाइल को डिक्रिप्ट करने की कोशिश कर रहा हूं ( part444.txt ) संदेश के साथ:

y2EdLtmNQsZkvwwf8jf3fM6c1thfzF0sQfblayGIBik=

सीबीसी मोड में 128 बिट एईएस के तहत यह बेस 64 एन्कोडेड एन्क्रिप्ट किया गया पाठ है। यह गद्देदार नहीं है चतुर्थ एन्क्रिप्टेड पाठ का पहला 16 बाइट है और कुंजी h4ckth1sk3yp4d16

मुझे पता है कि लोगों को बेस 64 के साथ समस्याओं से खराब जादू संख्या त्रुटि मिली, लेकिन अब मुझे "त्रुटि पढ़ने की इनपुट फ़ाइल" मिली है और यह सुनिश्चित नहीं है कि यहां से कहाँ जाना है

मैं प्रयास कर चुका हूं:

openssl enc -base64 -d part444.txt | openssl aes-128-cbc -d -k h4ckth1sk3yp4d16

मुझे "खराब जादू संख्या" और "इनपुट फ़ाइल पढ़ने में त्रुटि" क्यों आ रही है?