मैं जावा में पासवर्ड आधारित फ़ाइल एन्क्रिप्शन कर रहा हूं; मैं निम्नलिखित कोड का उपयोग करके नमक और पासवर्ड संयोजन से एक कुंजी प्राप्त करने के लिए अंतर्निहित एन्क्रिप्शन एल्गोरिदम और PBKDF2WithHmacSHA1
के रूप में एईएस का उपयोग कर रहा हूं (जो मुझे इस साइट पर किसी अन्य उदार पोस्टर से मिला है)।जावा में पीबीकेडीएफ 2 के साथ पासवर्ड सत्यापन
SecretKeyFactory f = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
KeySpec ks = new PBEKeySpec(password,salt,1024,128);
SecretKey s = f.generateSecret(ks);
Key k = new SecretKeySpec(s.getEncoded(),"AES");
मैं नमक का हिस्सा, उपयोगकर्ता प्रत्येक के अंत और एन्क्रिप्शन और डिक्रिप्शन काम ठीक पर अपना पासवर्ड में प्रवेश करती है :-) मेरे समस्या यह है कि मैं यह सत्यापित करने के पासवर्ड उपयोगकर्ता द्वारा दर्ज करने से पहले सही है सक्षम होने के लिए चाहते हैं (संभावित रूप से लंबी) डिक्रिप्शन प्रक्रिया शुरू करना। मुझे पता है कि पीबीकेडी स्पेक में एक वैकल्पिक 2 बाइट सत्यापन मान शामिल है लेकिन मुझे यकीन नहीं है कि उपर्युक्त दृष्टिकोण का उपयोग करके इस मूल्य को कैसे उत्पन्न किया जाए। क्या जावा इसके लिए समर्थन प्रदान करता है या नहीं, तो एक सुरक्षित विकल्प क्या होगा?
आपके समय के लिए धन्यवाद।
हाय, आपके उत्तर के लिए धन्यवाद। मैं इस धारणा के तहत था कि पीबीकेडीएफ 2 का उद्देश्य और कुंजी प्राप्त करने के लिए नमक और पासवर्ड के दोहराए गए संयोजन को सादा पाठ पासवर्ड से कुंजी की गणना करने की प्रक्रिया को महंगी और शब्दकोश शैली के हमलों को कठिन बनाने के लिए किया गया था। जैसे मैंने कहा कि पीबीकेडीएफ 2 spec में एक वैकल्पिक पासवर्ड सत्यापन मान शामिल है, मैं नहीं जानता कि जावा कार्यान्वयन में इसे कैसे प्राप्त किया जाए। – PinkyNoBrain
मैं मानता हूं कि कुंजी व्युत्पन्न प्रक्रिया प्रक्रिया पूरी होने के बाद त्वरित जांच की अनुमति देने से ब्रूट फोर्स हमला आसान हो जाता है क्योंकि हमलावर को वास्तव में वहां कुंजी की जांच करने के लिए कुछ भी डिक्रिप्ट करने की आवश्यकता नहीं होती है, लेकिन मैंने 256-बिट एईएस कुंजी की बड़ी खोज स्थान सोचा होगा वैसे भी एक शुद्ध ब्रूट फोर्स हमले निषिद्ध है? – PinkyNoBrain
@ पंकिनोब्रेन: त्वरित जांच के साथ समस्या यह है कि यह महत्वपूर्ण स्थान को बहुत कम करता है: आपके पास सभी पासफ्रेज़ को खोजने का एक त्वरित तरीका है जिसके लिए त्वरित जांच सफल होती है। इसलिए, आपके पास एईएस बल को बल देने के लिए बहुत कम कुंजी हैं। –