2008-12-03 9 views
17

मैं सममित एन्क्रिप्शन और हैशिंग पर जानकारी पा रहा हूं लेकिन जावा के लिए किसी भी तरह की सार्वजनिक कुंजी एन्क्रिप्शन पर मुझे अधिक जानकारी खोजने में काफी परेशानी हो रही है। मैं जो करना चाहता हूं वह अवधारणा कार्यक्रम का एक बहुत ही सरल सबूत है जो एक स्ट्रिंग (या मुझे लगता है कि एक फ़ाइल) लेता है, इसे एक सार्वजनिक कुंजी के साथ एन्क्रिप्ट करता है और फिर इसे एक निजी कुंजी के साथ डिक्रिप्ट करता है।जावा में सार्वजनिक कुंजी एन्क्रिप्शन पर कोई ट्यूटोरियल?

कोई भी ट्यूटोरियल लिंक या उदाहरणों की सराहना की जाएगी। मैं सिर्फ कुछ दिखाना चाहता हूं कि आप जावा में सार्वजनिक कुंजी एन्क्रिप्शन का उपयोग कैसे कर सकते हैं।

उत्तर

12

इसके बारे में वेब पर बहुत सारे संसाधन हैं। असल में यह KeyPairGenerator वर्ग के चारों ओर बदल जाता है।

उदाहरण प्रोग्राम के लिए http://www.informit.com/articles/article.aspx?p=170967&seqNum=4 देखें।

+0

आपके द्वारा दिए गए उदाहरण के लिए, मुझे निम्न त्रुटि मिली: कोई भी प्रदाता RSA/NONE/PKCS1PADDING का समर्थन नहीं कर सकता। मुझे आश्चर्य है कि इस कंप्यूटर की जावा की प्रति ने इसे लागू नहीं किया है। –

+3

आरएसए/ईसीबी/पीकेसीएस 1 पैडिंग आज़माएं। ईसीबी प्रभावी ढंग से "नहीं" ब्लॉक चेनिंग मोड है। – erickson

13

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

  1. सममित कुंजी, प्राप्तकर्ता की सार्वजनिक कुंजी से एन्क्रिप्ट की गई।
  2. एल्गोरिदम के लिए पैरामीटर, आमतौर पर सममित सिफर के लिए प्रारंभिक वेक्टर।
  3. एन्क्रिप्शन एल्गोरिदम के लिए पहचानकर्ताओं का उपयोग किया जाता है।
  4. सिफरटेक्स्ट — वास्तविक संदेश, सममित सिफर के तहत एन्क्रिप्ट किया गया।

मुझे JCE documentation में नमूना कोड मिला जो काम करने के लिए पर्याप्त है।

इस जानकारी को बंडल करने के लिए मानक प्रारूप क्रिप्टोग्राफिक संदेश सिंटेक्स, या सीएमएस है, जिसका उपयोग ईमेल अनुप्रयोगों में एस/एमआईएम द्वारा किया जाता है। मैं Bouncy Castle's libraries का उपयोग करने की सलाह देता हूं; वे ठोस, काफी सरल हैं, और सक्रिय रूप से बनाए रखा है। संदर्भ दस्तावेज थोड़ा कमजोर है, लेकिन वे कोड उदाहरण प्रदान करते हैं।

+0

रूट एंड्रॉइड डिवाइस में, हम क्लाइंट साइड में कुंजी नहीं डाल सकते हैं। तो अब सर्वर में एन्क्रिप्टेड क्लाइंट में फ़ाइल डिक्रिप्ट करने के लिए हम क्या कर सकते हैं? कृपया मेरा संबंधित प्रश्न देखें: http://stackoverflow.com/questions/30951805/protected-document-viewer –

+0

@ श्री हाइड आप जो करने की कोशिश कर रहे हैं वह असंभव है। यही कारण है कि लोग अपने उपकरणों को जेलबैक करते हैं: डीआरएम को अक्षम करने के लिए निर्माता निर्माता पर डिवाइस को बनाए रखने की कोशिश कर रहा है। आप किसी को एक रहस्य नहीं दे सकते और अभी भी इसके साथ क्या कर सकते हैं उसे नियंत्रित कर सकते हैं। – erickson

+0

तो सबसे अच्छा समाधान के नजदीक क्या है ?! ठीक है न? : सर्वर पर प्रत्येक एन्क्रिप्टेड फ़ाइल सर्वर के लिए निजी कुंजी जेनरेट करें और क्लाइंट को कुंजी और एन्क्रिप्टेड फ़ाइल भेजें। –

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