मैं अपेक्षाकृत परिपक्व ओपन-सोर्स PHP प्रोजेक्ट में योगदान दे रहा हूं। हाल ही में, मैंने पाया कि यह पासवर्ड को सादा MD5 हैश के रूप में संग्रहीत करता है, जो मेरे लिए काफी परेशान है। मैंने सोचा कि अगर मैं इसे ठीक करने जा रहा था, तो मैं भी यह सही कर सकता हूं (टीएम), इसलिए मैं bcrypt का उपयोग करना चाहता था।मैं PHP अनुप्रयोग में bcrypt को कैसे प्रबंधित कर सकता हूं (और मुझे चाहिए)?
सबसे पहले, मुझे अन्य भाषाओं के लिए क्या मिला है: bcrypt-ruby ओपनबीएसडी या jBCrypt के जावा कोड से मूल सी कोड का उपयोग करने लगता है। py-bcrypt बीएसडी कोड के चारों ओर एक पतली आवरण है। BCrypt.netjBCrypt का सीधा बंदरगाह है।
अब, PHP the crypt function में बैक्रिप्ट का समर्थन करता है (यद्यपि, भ्रामक रूप से केवल 'blowfish' कहा जाता है)। हालांकि, 5.3 से पहले के संस्करणों को सिस्टम पर ही समर्थन की आवश्यकता होती है, आमतौर पर crypt_blowfish द्वारा प्रदान की जाती है। phpass वही है, और PHP 5.3 या Suhosin स्थापित करने की अनुशंसा करता है।
चूंकि एप्लिकेशन के कई उपयोगकर्ता मानक साझा होस्टिंग का उपयोग करते हैं, इसलिए मैं सर्वर की किसी विशेष कॉन्फ़िगरेशन की आवश्यकता नहीं चाहता हूं। मैं केवल PHP की 5.3 रिलीज से कोड चुरा रहा था, लेकिन यह सी में है, और (मैंने जो कुछ पढ़ा है, उससे अभी तक) मुझे परियोजना के उपयोगकर्ताओं के लिए सी-एक्सटेंशन के उपयोग की आवश्यकता नहीं है।
मैंने बस bcrypt का शुद्ध-PHP पोर्ट बनाने का विचार किया, लेकिन the source of jBCrypt पर देखकर, मुझे यकीन नहीं है कि मुझे यह करना चाहिए कि मुझे PHP या blowfish से अविश्वसनीय रूप से परिचित नहीं है, और यहां एक गलती हो सकती है पहली जगह में पता लगाने के लिए एक साथ खतरनाक और मुश्किल है।
तो, मैं तुम दोनों (बहुखण्डीय) प्रश्नों के मौजूद:
- मुझे का सबसे अच्छा हो रही पीएचपी ज्ञान की मेरी कमी है? क्या मैं वास्तव में पहले से बनाए गए कार्यान्वयन में से एक का उपयोग कर सकता हूं?
- क्या मुझे इसके बजाय बस एक साधारण लूपिंग फ़ंक्शन बनाना चाहिए जो
sha1()
याmd5()
को बार-बार कॉन्फ़िगर करने योग्य संख्या के लिए कॉल करता है?
+1। हैश हमेशा इस्तेमाल किया जाना चाहिए। – rook
हालांकि bcrypt वास्तव में एक ब्लॉक सिफर से निर्मित एक हैश फ़ंक्शन है ... – rook
शून्य, क्या आपके पास नीचे दिए गए मुद्दे पर फेंकने के लिए कोई संसाधन है? –