2009-03-07 13 views
17

मैं एक नए वेब एप्लिकेशन में पासवर्ड हैशिंग के लिए jBCrypt का उपयोग करने की योजना बना रहा हूं, क्योंकि यह मैंने जो पढ़ा है उससे सबसे अच्छा माना जाता है। जैसा कि मैंने इसका उपयोग नहीं किया है, इससे पहले कि मैंने इसका उपयोग न करने का कोई कारण नहीं है।पासवर्ड हैशिंग के लिए क्या उपयोग करें? JBCrypt का उपयोग न करने का कोई कारण नहीं है?

  • मैं इसे Maven भंडार में नहीं मिला है जो एक डाउनर के रूप में मैं अपने निर्भरता को लेना पसंद का उपयोग कर प्रबंधित होता है (mvnrepository.org पर jbcrypt और bcrypt के लिए खोज):

    मैं इस राशि यदि संभव हो तो एक मेवेन भंडार। यदि जेबीसीआरपीटी पासवर्ड हैशिंग के लिए नस्ल समाधान का सबसे अच्छा समाधान है तो मुझे अपना खुद का स्थानीय भंडार स्थापित करना होगा और इसे इस तरह से उपलब्ध करना होगा। या क्या मैंने इसे अभी याद किया है? शायद यह कहीं कहीं है?

  • यह केवल संस्करण 0.2 पर है, लेकिन हो सकता है कि यह वैसे भी स्थिर है और कम संस्करण संख्या के कारण का कोई अन्य कारण है?

उत्तर

5

जेबीक्रिप्ट शायद आपके पासवर्ड के लिए क्रिप्टो एल्गोरिदम के रूप में ठीक है; blowfish अपेक्षाकृत मजबूत है। यद्यपि ब्लोफिश में स्वयं कुछ कार्यान्वयन त्रुटियां हुई हैं, मुझे जेबीक्रिप्ट के बारे में कुछ भी नहीं मिला है। दूसरी तरफ, ब्लॉफिश का परीक्षण अन्य एल्गोरिदम के रूप में लगभग उतना ही नहीं किया गया है, और crack -स्टाइल ज्ञात-पेंटैक्स्ट हमला अक्सर अपेक्षित, आश्चर्यजनक क्रिप्टो गीक्स से बेहतर काम करता है।

तो यहाँ मैं क्या सुझाव है कि करेंगे:

  • हद तक आप यथोचित कर सकते हैं करने के लिए आगे जाना है और jBcrypt का उपयोग लेकिन रक्षा अपने एन्क्रिप्टेड पासवर्ड फ़ाइलें - आप का उपयोग कर के रूप में/etc/एक UNIX सिस्टम पर छाया।
  • निखिल के सुझाव के विपरीत, मैं स्रोतों को आपके संस्करण नियंत्रण में खींच सकता हूं, दो कारणों से: (1) आप उन्हें कहां रखेंगे, क्योंकि जब भी आप निर्माण करेंगे, और (2) क्योंकि हमेशा होता है मौका जेबीक्रिप्ट करने वाला व्यक्ति अन्य चीजों पर आगे बढ़ेगा, और आप खुद को डिलीवरी से पहले लटकना नहीं चाहते हैं (जो अनिवार्य रूप से आपको पता चल जाएगा।) इस तरह की स्थिति में, मैं चाहता था स्रोतों को अपने संस्करण नियंत्रण में रखें जैसे कि वे आपके कोड पर थे, और फिर कोई भी परिवर्तन डाला जा सकता है जैसे कि आपने स्वयं एक नया संस्करण बनाया होगा। सामान्य रूप से आपके से अधिक जटिल होने की आवश्यकता नहीं है।
+0

हां यह अब मेरे संस्करण नियंत्रण में है। मुझे ब्लॉफिश में इन ज्ञात कमजोरियों के लिए Google चाहिए, क्योंकि यह मेरे लिए खबर है। "दरार शैली ज्ञात-सादा पाठ हमले" के बारे में, क्या आपका मतलब है कि एक क्रूर बल शब्दकोश प्रकार का हमला? यदि यह कलाकार है तो मैं ब्लॉफिश का उपयोग करना चाहता हूं, क्योंकि यह धीमा एल्गोरिदम है। –

+0

नहीं, एलेक मफेट की दरार देखें: यह सामान्य पासवर्ड के एक बड़े शब्दकोश का precomputes और फिर ciphertexts की तुलना करता है। और ऐसा नहीं है कि ब्लोफिश को त्रुटियों के बारे में पता चला है, यह है कि कुछ कार्यान्वयनों में त्रुटियां हैं। –

+0

एचएम, ठीक है। लेकिन मैं पैसवर्ड लवण का उपयोग कर रहा हूं इसलिए इस तरह एक शब्दकोश हमला संभव नहीं होना चाहिए। –

0

मुझे संदेह है कि स्थिरता एक मुद्दा होने जा रहा है, क्योंकि बीक्रिप्ट स्वयं परिपक्व है और इसके छोटे, मानकीकृत रैपर असाधारण कुछ भी नहीं करते हैं। मैं डेमियन मिलर के अन्य बीक्रिप्ट रैपर, python-bcrypt से खुश हूं, जो केवल संस्करण 0.1 पर है।

मैवेन से अपरिचित हूं, लेकिन (पाखंडी चेतावनी!) मुझे संदेह है कि आपको एक घटक के लिए संस्करण नियंत्रण की आवश्यकता है जितनी सरल है। साइट को उद्धृत करने के लिए, v0.1 से v0.2 में परिवर्तन "शुद्धता, टाइपो और एपीआई tweaks (पूरी तरह से पीछे संगत) थे," और TODO सूची खाली है।

+0

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

2

जहाँ तक आपकी चिंता के रूप में है कि यह परिपक्व, मैं, जो बताते हैं कि आप अगर आप एक ही परिणाम प्राप्त देखने के लिए jBcrypt के परिणाम की तुलना अपनी खुद की JUnit परीक्षण और अधिक साबित Bcrypt, की स्थापना की जा रही थी नहीं है और फिर जेबीक्रिप्ट परियोजना में योगदान दें।

लेकिन वह पहले से ही किया गया है:

... bcrypt एल्गोरिदम के कैननिकल सी कार्यान्वयन के साथ लाइब्रेरी और संगतता के सही संचालन को सत्यापित करने के लिए JUnit इकाई के सही संचालन को सत्यापित करने के लिए परीक्षण।

JUnit परीक्षण Perusing देखने के लिए अगर वे अपनी संतुष्टि का स्तर को पूरा कर रहा है मैं कहां से शुरू होगी ...

+0

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

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