2013-05-01 5 views
21

के लिए अलग-अलग परिणाम क्यों देता है मैं आरएसए एन्क्रिप्शन का उपयोग कर ओपनएसएसएल के साथ डेटा एन्क्रिप्ट कर रहा हूं, जो ठीक काम करता है। आरएसए की मेरी समझ यह है कि एक ही सार्वजनिक कुंजी के साथ एक ही डेटा को एन्क्रिप्ट करना हमेशा आपको एक ही परिणाम देगा (as stated here या here)।आरएसए एन्क्रिप्टेड टेक्स्ट मुझे एक ही पाठ

हालांकि, ओपनस्ल का उपयोग करते हुए मुझे प्रत्येक बार एन्क्रिप्शन दोहराते समय अलग-अलग परिणाम मिलते हैं। उदाहरण के लिए:

➜ ~ echo '30' | openssl rsautl -encrypt -inkey pub.pem -pubin | shasum 
     11b6e058273df1ebe0be5e0596e07a6c51724ca0 - 

➜ ~ echo '30' | openssl rsautl -encrypt -inkey pub.pem -pubin | shasum 
     05cb82595f7429ef196189f4e781088597d90eee - 

तो क्यों उत्पादन नहीं अद्वितीय है? क्या ऐसा इसलिए है क्योंकि मुझे आरएसए एन्क्रिप्शन गलत मिला है या क्योंकि ओपनएसएल कुछ अतिरिक्त जादू करता है?

वास्तव में मैं एक डेटाबेस तैयार करने की कोशिश कर रहा हूं जो केवल आरएसए एन्क्रिप्टेड डेटा स्टोर करता है। मैं एन्क्रिप्टेड जानकारी के हैशसम पर खोज करना चाहता हूं, जो असंभव है अगर एन्क्रिप्शन प्रक्रिया स्वयं अद्वितीय नहीं है।

+0

एफडब्ल्यूआईडब्ल्यू, rsautil [pkeyutil] (http://www.openssl.org/docs/apps/pkeyutl.html) –

उत्तर

38

एक सुरक्षित आरएसए एन्क्रिप्शन एक उपयुक्त पैडिंग योजना के साथ लागू किया गया है, जिसमें कुछ यादृच्छिकता शामिल है। अधिक जानकारी के लिए PKCS#1 या OAEP देखें।

RSA एन्क्रिप्शन के साथ '0 के और और यादृच्छिक बिट के एक स्ट्रिंग गद्देदार संदेश एन्क्रिप्ट करता है। प्रक्रिया में, क्रिप्टोग्राफिक हैशिंग और एक्सओआरिंग द्वारा सिफरटेक्स्ट में यादृच्छिक स्ट्रिंग "छिपी हुई" है। डिक्रिप्शन पर, आरएसए डिक्रिप्शन सिफरटेक्स्ट से यादृच्छिक स्ट्रिंग को पुनः प्राप्त करता है और संदेश पुनर्प्राप्त करने के लिए इसका उपयोग करता है। यही कारण है कि आप एक ही पाठ संदेश के लिए openssl rsautl के साथ अलग परिणाम प्राप्त करते हैं।

5

ठीक है, मुझे मिल गया। खुद ही आरएसए निर्धारक है। हालांकि, एक बेहतर सुरक्षा हो और एन्क्रिप्टेड जानकारी अनुमान लगाने से हमलावरों को रोकने के लिए, एन्क्रिप्शन किया जाता है नहीं शुद्ध "डेटा", लेकिन "डेटा" + "कुछ यादृच्छिक पैटर्न" (I should have read wikipedia more carefully)

+0

के पक्ष में कम किया गया है यह एन्क्रिप्टेड जानकारी का अनुमान लगाने के बारे में नहीं है। भले ही जानकारी असहनीय है (एक 128 बिट कुंजी कहें) उचित पैडिंग योजना का उपयोग न करने से गंभीर कमजोर पड़ती है। यहां तक ​​कि अभी भी लोकप्रिय पीकेसीएस # 1 v1.5 योजना कमजोर है। – CodesInChaos

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