2008-09-08 23 views
5

का उपयोग कर 128 बिट डेटा एन्क्रिप्शन मुझे कम से कम 128 बिट कुंजी के साथ एन्क्रिप्ट करके कुछ संवेदनशील डेटा स्टोर करने की आवश्यकता है। मैंने javax.crypto पैकेज में जांच की और पाया कि कुछ सिफर नाम हैं, जैसे PBEWithMD5AndDES या PBEWithSHA1AndDESede जो 56 बिट और 80 बिट (http://en.wikipedia.org/wiki/DESede) तक एन्क्रिप्शन प्रदान करता है।जावा

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

अगर आपको इसके बारे में कोई जानकारी है तो कृपया मुझे बताएं।

उत्तर

8

Advanced Encryption Standard (एईएस) का उपयोग करें। यह 128, 1 9 2, या 256 बिट्स की मुख्य लंबाई का समर्थन करता है।

algorithm सरल है। सन जावा वेबसाइट में जावा में section explaining how to do AES एन्क्रिप्शन है।

विकिपीडिया से ...

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

तो एक सामान्य नियम के रूप में आप की अपेक्षा नहीं कर रहे हैं डीईएस या इसके रूपों का उपयोग करें क्योंकि इसे चरणबद्ध किया जा रहा है।

अभी तक, एईएस का उपयोग करना बेहतर है। Twofish, Blowfish आदि जैसे अन्य विकल्प भी हैं। ध्यान दें कि Twofish Blowfish के एक उन्नत संस्करण के रूप में माना जा सकता है।

3

आपको अपने जेडीके के लिए असीमित ताकत जेसीई नीति फ़ाइल डाउनलोड और स्थापित करने की आवश्यकता है। जेडीके 6 के लिए, यह बहुत नीचे http://java.sun.com/javase/downloads/index.jsp पर है।

+0

यह केवल एईएस 192 या 256 के लिए आवश्यक नहीं है? मेरा मानना ​​है कि एईएस-128 को असीमित ताकत जेसीई नीति फाइलों की आवश्यकता नहीं है। – halluc1nati0n

0

मैं किसी भी माध्यम से क्रिप्टो विशेषज्ञ नहीं हूं (इसलिए इस सुझाव को नमक के अनाज के साथ लें), लेकिन मैंने Blowfish पहले उपयोग किया है, और मुझे लगता है कि आप इसे अपनी आवश्यकता के लिए उपयोग कर सकते हैं। Twofish नामक उसी व्यक्ति द्वारा एक नया एल्गोरिदम भी है।

यहां website with a Java implementation है, लेकिन लाइसेंस से सावधान रहें (यह गैर-वाणिज्यिक उपयोग के लिए नि: शुल्क कहता है)। आप उस लिंक को Bruce Schneier's website (दोनों एल्गोरिदम के निर्माता) से भी ढूंढ सकते हैं।

+0

"जावा कार्यान्वयन के साथ वेबसाइट" में लिंक मर चुका है। कृपया इसे अद्यतन करें ... – vettipayyan

4

मुझे अतीत में http://www.bouncycastle.org/ के साथ अच्छी सफलता मिली है (उनके पास सी # संस्करण भी है)।

2

3 अलग-अलग उत्तरों के संयोजन से मुझे लगता है कि सही जवाब क्या है।

Bouncycastle से डाउनलोड एन्क्रिप्शन पुस्तकालयों तो आप (फ़ाइलें डाउनलोड पृष्ठ के निचले भाग में कर रहे हैं) Oracle से "असीमित शक्ति क्षेत्राधिकार नीति" डाउनलोड करने के लिए की जरूरत है। सुनिश्चित करें कि आप इसे इंस्टॉल करने के तरीके पर रीडेमे-फ़ाइल पढ़ते हैं।

एक बार ऐसा करने के बाद, और Bountycastle पैकेज के साथ दिए गए नमूना कोड का उपयोग करके आप अपने डेटा को एन्क्रिप्ट करने में सक्षम होना चाहिए। आप एक ट्रिपल डीईएस कार्यान्वयन के साथ जा सकते हैं, जो आपको 112 बिट्स कुंजी (अक्सर 128 बिट के रूप में जाना जाता है), लेकिन उनमें से केवल 112 वास्तव में सुरक्षित हैं), या जैसा कि पहले बताया गया था, आप एईएस का उपयोग कर सकते हैं। मेरा पैसा एईएस पर होगा।

+0

शीर्ष: यह BounCycastle है, BounTycastle नहीं – lImbus

0

धन्यवाद माइकल, जेसीई में कई चीजों की कोशिश करने के बाद, मैं अंततः बाउंसीकैसल के लिए बस गया।

जेसीई पासवर्ड आधारित एन्क्रिप्शन के लिए एन्क्रिप्शन और पीबीई के लिए एईएस का समर्थन करता है लेकिन यह दोनों के संयोजन का समर्थन नहीं करता है। मैं वही चीज़ चाहता था और मुझे बाउंसीकैसल में मिला।

उदाहरण है पर: http://forums.sun.com/thread.jspa?messageID=4164916