MySQL

2010-02-23 7 views
9

में हैंश किए गए पासवर्ड संग्रहीत करना मैं PHP में नमकीन sha1 का उपयोग करके हैश पासवर्ड बना रहा हूं।MySQL

मेरा प्रश्न है: MySQL में उचित वर्ण एन्कोडिंग क्या है, परिणाम टाइप करने के लिए फ़ील्ड प्रकार & लंबाई?

क्या पासवर्ड सुरक्षा के लिए MySQL में कुछ और है? अंत में SHA256 या SHA512 व्यावहारिक हैशिंग विकल्प हैं?

उत्तर

5

एक SHA1 हैश के लिए, CHAR (40) इष्टतम फ़ील्ड प्रकार और लंबाई होगी। कैरेक्टर एन्कोडिंग से कोई फर्क नहीं पड़ता, सभी पात्र ASCII रेंज के भीतर हैं। मैं स्थिरता के लिए आपके बाकी डेटाबेस के समान चरित्र सेट के साथ जाऊंगा।

12

SHA-2 एल्गोरिदम (SHA-256, SHA-512) मान्य विकल्प हैं; हालांकि उन्हें अधिक भंडारण की आवश्यकता है। SHA-256 के लिए हेक्स अंकों को संग्रहीत करने के लिए, उदाहरण के लिए, आपको एक CHAR (64) फ़ील्ड की आवश्यकता है। इस बारे में कुछ सवाल हैं कि SHA-1 "टूटा हुआ" Schneier discussed it और NIST commented है। यदि वे आपको चिंतित करते हैं, तो SHA-2 फ़ंक्शंस में से किसी एक का उपयोग करना बेहतर हो सकता है।

और यदि आप एक ब्रूट फोर्स अटैक की लागत में वृद्धि करना चाहते हैं, तो आप पीबीकेडीएफ 2 जैसे एल्गोरिदम का उपयोग करके कुछ पुनरावृत्तियों को जोड़ने पर भी विचार कर सकते हैं। किसी ने एक उदाहरण here in the comments पोस्ट किया।

+0

"SHA-256 के लिए हेक्स अंकों को संग्रहीत करने के लिए, उदाहरण के लिए, आपको एक CHAR (64) फ़ील्ड चाहिए।" क्या आप इसे समझा सकते हैं? धन्यवाद। – JDelage

+2

@JDelage: मैं बस इसे स्टोर करने के लिए आवश्यक हेक्स अंकों की संख्या का जिक्र कर रहा था। आउटपुट 256 बिट्स => 32 बाइट्स => 64 हेक्स अंक है। अगर भंडारण एक मुद्दा था, तो इसे 32 बाइट्स में किसी प्रकार के कच्चे/बाइनरी फ़ील्ड प्रकार में संग्रहीत किया जा सकता था। –