2009-02-25 18 views
13

हमें जावा में कुछ रिजेंडेल विकास करने की आवश्यकता है।जावा में रिजेंडेल समर्थन

लेख, पुस्तकालय आदि के लिए कोई सिफारिशें जो हमारी मदद करेगी?

कुंजीस्टोर रखरखाव के लिए कोई पॉइंटर्स और कुंजी को सुरक्षित रूप से कैसे स्टोर करें?

संपादित करें:

इसे ओपन सोर्स होना आवश्यक होगा। अनिवार्य रूप से, यह रिजेंडेल का उपयोग कर डेटा का मानक एन्क्रिप्ट/डिक्रिप्ट है। http://java.sun.com/developer/technicalArticles/Security/AES/AES_v1.html

सुरक्षित कुंजी भंडारण के लिए के रूप में, सामान्य विधि उपयोगकर्ता इनपुट (एक पदबंध) से एक एन्क्रिप्शन कुंजी को प्राप्त एक क्रिप्टोग्राफिक हैश समारोह का उपयोग कर, और करने के लिए ली गई कुंजी का उपयोग करने के लिए है:

+0

रिजेंडेल == एईएस – lImbus

उत्तर

21

जावा में बॉक्स के बाहर एईएस शामिल है। रिजेंडेल एईएस है। आपको किसी बाहरी पुस्तकालय की आवश्यकता नहीं है। आपको बस इस तरह कुछ चाहिए:

byte[] sessionKey = null; //Where you get this from is beyond the scope of this post 
byte[] iv = null ; //Ditto 
byte[] plaintext = null; //Whatever you want to encrypt/decrypt 
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); 
//You can use ENCRYPT_MODE or DECRYPT_MODE 
cipher.calling init(Cipher.ENCRYPT_MODE, new SecretKeySpec(sessionKey, "AES"), new IvParameterSpec(iv)); 
byte[] ciphertext = cipher.doFinal(plaintext); 

और यह एन्क्रिप्शन/डिक्रिप्शन के लिए है। यदि आप बड़ी मात्रा में डेटा संसाधित कर रहे हैं तो आप उन टुकड़ों को पढ़ने से बेहतर हैं जो 16 बाइट्स के गुणक हैं और डोफिनल के बजाय अपडेट को कॉल कर रहे हैं (आप केवल अंतिम ब्लॉक पर डफिनल को कॉल करते हैं)।

+7

रिजेंडेल एईएस के बराबर नहीं है, लेकिन इसके बजाय कुछ प्रतिबंधों के साथ एईएस है - 128 बिट्स के निश्चित ब्लॉक आकार, और कुछ क्रिप्टो मोड समर्थित नहीं हैं। कोई भी पूर्ण एईएस कार्यान्वयन रिजेंडेल के रूप में प्रयोग योग्य होना चाहिए। – Cheeso

+14

यह बिल्कुल विपरीत है, एईएस रिजेंडेल –

+3

@ ब्रूनोरोही का एक उप-समूह सही है। एईएस रिजेंडेल का सबसेट है, इसे जांचें http://stackoverflow.com/questions/748622/differences-between-rijndael-and-aes – tony9099

1

javax.crypto एईएस समर्थन हासिल है कीचेन एन्क्रिप्ट करें। या, यदि आपको केवल एक कुंजी की आवश्यकता है, तो आप व्युत्पन्न कुंजी का उपयोग कर सकते हैं।

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

कहा जा रहा है कि सवाल बहुत अस्पष्ट है।

+0

यह भी ध्यान देने योग्य है कि 'javax.crypto' एईएस के एक बहुत ही अनुकूलित संस्करण का उपयोग करता है और काफी तेज़ है। – tony9099

5

एक महान मुफ्त पुस्तकालय के लिए, मैं अत्यधिक अनुशंसा करता हूं BouncyCastle. यह सक्रिय रूप से बनाए रखा गया है, उच्च गुणवत्ता, और कोड उदाहरणों की एक अच्छी श्रृंखला है। संदर्भ प्रलेखन के लिए, आपको सामान्य JCE docs.

पर अधिक भरोसा करना होगा, मैं यह नहीं कह सकता कि हम सत्यापन प्रमाणन आवश्यकताओं को पूरा करने के लिए किस लाइब्रेरी का उपयोग करते हैं। लेकिन क्रिप्टोजे के विकल्प हैं जो बहुत सस्ता हैं।

सामान्य रूप से, मैं रिजेंडेल जैसे सममित सिफर के साथ एन्क्रिप्ट किए गए प्रत्येक संदेश के लिए एक नई कुंजी उत्पन्न करने की सिफारिश करता हूं, और उसके बाद उस कुंजी को आरएसए जैसे असममित एल्गोरिदम के साथ एन्क्रिप्ट कर रहा हूं। इन निजी कुंजियों को पासवर्ड-सुरक्षित, सॉफ़्टवेयर-आधारित कुंजी स्टोर जैसे पीकेसीएस # 12 या जावा के "जेकेएस", या बेहतर सुरक्षा के लिए "स्मार्ट कार्ड" हार्डवेयर टोकन या अन्य क्रिप्टो हार्डवेयर मॉड्यूल पर संग्रहीत किया जा सकता है।

3

जैसा कि मेरी कंपनी ने हाल ही में पाया है, एईएस काफी रिजेंडेल नहीं है। एईएस के पास प्रतिबंध है कि कुंजी 128, 1 9 2, या 256 बिट होनी चाहिए - हालांकि, रिजेंडेल 160 और 224 के लिए चाबियों की अनुमति देता है।

जैसा कि उपरोक्त एरिक्सन द्वारा इंगित किया गया है, बाउंसीकास्टल एक रिजेंडेल ऑब्जेक्ट प्रदान करता है जो अतिरिक्त कुंजी लंबाई का समर्थन करता है: 128/160/192/224/256 बिट्स। विशेष रूप से, हल्के एपीआई पर एक नज़र डालें।

जीएनयू-क्रिप्टो एक और ओपन सोर्स लाइब्रेरी है - हालांकि, यह 160 और 224 बिट कुंजी के लिए भी समर्थन प्रदान नहीं करता है।

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

+1

यदि आपको एंड्रॉइड विकास के लिए जावा का उपयोग करने की आवश्यकता है (हालांकि सवाल यह नहीं बताता है कि बाउंटी कैसल के पास अब एक भाई है, जो स्पॉन्डी कैसल के रूप में जाना जाने वाला एंड्रॉइड पर अधिक लचीलापन देता है, जो एक व्युत्पन्न है .. और वास्तव में काफी अच्छा) – tony9099

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