2011-08-11 14 views
5

के बीच एईएस एन्क्रिप्शन/डिक्रिप्शन मुझे रुबी का उपयोग करके पाठ का एक टुकड़ा एन्क्रिप्ट करना होगा। मैंने उस उद्देश्य के लिए रुबी-ओपेन्सस्ल मणि का उपयोग किया है। यह एन्क्रिप्टेड टेक्स्ट उन्हें एक पायथन प्रोग्राम में पास किया जाता है जिसका उपयोग करके मुझे इसे डिक्रिप्ट करना होता है। मैंने उद्देश्य के लिए Pycrypto का उपयोग किया है।रूबी-ओपनएसएसएल, पीईक्रिप्टो

समस्या है, पिक्रीपेटो में हमें मैन्युअल रूप से पैडिंग सम्मेलन निर्दिष्ट करना होगा। रूबी में, पैडिंग स्वचालित रूप से किया जाता है। मैं एईएस-सीबीसी ब्लॉक सिफर मोड का उपयोग कर रहा हूँ। यह पैडिंग समस्या का कारण बनता है क्योंकि इसकी स्ट्रिपिंग पाइथन में ठीक से नहीं की जा सकती है।

Python: aENJY28lvE89yY2T/te8vWwdeoeSqSwwlrOAv7b3AWw= 
Ruby: aENJY28lvE89yY2T/te8vVoQE6JNxdSRgYXC8mqF3nI= 

कृपया मदद ...

उत्तर

3

OpenSSL डिफ़ॉल्ट रूप से PKCS # 5Padding होती है, इसलिए जब एईएस सीबीसी मोड (सीएफ OpenSSL docs) में OpenSSL::Cipher साथ डेटा को एन्क्रिप्ट यह भी स्वतः ही प्रयोग किया जाता है। इसलिए रुबी का उपयोग करते समय मैन्युअल पैडिंग करने की कोई ज़रूरत नहीं है।

PyCrypto का उपयोग करते समय पैडिंग में पैडिंग को manually किया जाना चाहिए।

एक बार जब आप पाइथन में इस पैडिंग योजना को लागू करते हैं, तो एन्क्रिप्टेड बेस 64 स्ट्रिंग दोनों मेल खाना चाहिए।

+0

मैंने M2Crypto का उपयोग करने की कोशिश की। दुर्भाग्यवश यह लिंक में प्रदान किए गए कार्यक्रम के साथ काम नहीं कर रहा है। मैं पीकेसीएस # 5 पैडिंग लागू करने की कोशिश करूंगा। – vishy1618

+0

यह पैडिंग तर्क का उपयोग कर काम करता है, धन्यवाद! – vishy1618

+0

अच्छा - आपका स्वागत है! – emboss

0

ऐसा प्रतीत होता है कि आप दोनों में उपयोग करने के लिए सही गद्दी मोड को निर्दिष्ट करने की आवश्यकता है: एक उदाहरण के रूप में, इन दोनों रूबी और पायथन में एक एन्क्रिप्टेड पाठ का बेस 64 एनकोडिंग हैं मामले - पैडिंग एक सिफर स्ट्रीम की एक मौलिक संपत्ति है, और दोनों रिसीवर और प्रेषक पर मेल खाना चाहिए।

+0

पैडिंग मैन्युअल रूप से PyCrypto में छेड़छाड़ की जा सकती है, यानी, आप उस तर्क को निर्दिष्ट कर रहे हैं जिसके द्वारा आप पैडिंग करते हैं। दूसरी तरफ रुबी में, पैडिंग स्वचालित रूप से किया जाता है, मुझे पाइथन में तर्क को डुप्लिकेट करने के अलावा इसे कॉन्फ़िगर करने का कोई तरीका नहीं दिखता है। – vishy1618

+0

आपको या तो पाइथन में क्या करना है रूबी में स्वचालित रूप से क्या किया जा रहा है या इसे मैन्युअल रूप से दोनों में करें। – agf

+0

मुझे रूबी में मैन्युअल रूप से ऐसा करने का कोई तरीका नहीं पता है। जो मुझे मेरे अजगर कार्यक्रम को संशोधित करने के साथ छोड़ देता है, सिवाय इसके कि मुझे नहीं पता कि रुबी-ओपेन्सल में पैडिंग कैसे किया जाता है। – vishy1618

संबंधित मुद्दे