2011-06-02 9 views
15

सभी,मुझे अपने sha512 नमकीन और MySQL में पासवर्ड धोने के लिए कैसे स्टोर करना चाहिए?

मैं एक वेब अनुप्रयोग के लिए नमक & हैश उपयोगकर्ता पासवर्ड के लिए निम्न पीएचपी समारोह का उपयोग कर रहा:

function stringHashing($password,$salt){ 
$hashedString=$password.$salt; 
for ($i=0; $i<50; $i++){ 
    $hashedString=hash('sha512',$password.$hashedString.$salt); 
    } 
return $hashedString; 
} 

सबसे अच्छा तरीका है MySQL में जिसके परिणामस्वरूप स्ट्रिंग स्टोर करने के लिए क्या है? मुझे लगता है कि यह एक निश्चित चार्ज फील्ड है? मुझे सही लंबाई की गणना करने के बारे में कैसे जाना चाहिए?

धन्यवाद,

JDelage

+1

इससे मदद मिल सकती है .. http://stackoverflow.com/questions/2319588/storing-hashed-passwords-in-mysql। – tjm

+1

स्ट्रिंग को रीहाश करने के लिए कितनी बार आप तीसरे पैरामीटर का उपयोग नहीं कर रहे हैं? – zzzzBov

+0

डुप्लिकेट नहीं - मेरा प्रश्न sha512 के बारे में है, SHA-1 नहीं। – JDelage

उत्तर

26

खैर, SHA512 हमेशा एक 512 बिट हैश वापस आ जाएगी, दो तर्क hash() विधि, हेक्स अंक के रूप में इस देता है ताकि 512 बिट बाइट प्रति/8 बिट * 2 हेक्स है बाइट प्रति अंक = 128 हेक्स अंक

एक CHAR(128) होना चाहिए कि आप क्या

1

जरूरत है मैं हमेशा एक अधिक से अधिक की जरूरत लंबाई के साथ एक varchar क्षेत्र का इस्तेमाल किया है। क्या होगा, सड़क के नीचे, आप अपना एल्गोरिदम बदलना चाहते हैं? आपको टेबल को बदलना होगा, जो परेशान है।

SHA512 128 char स्ट्रिंग का उत्पादन करेगा, इसलिए कम से कम फ़ील्ड दें।

इसके अलावा, मुझे यह इंगित करना होगा कि आप बहुत बर्बाद प्रसंस्करण कर रहे हैं। आप एक ही नमक और हैश के माध्यम से बार-बार पुन: प्रयास करके बहुत अधिक सुरक्षा नहीं जोड़ रहे हैं। आखिरकार, आपको अभी भी नमक और पासवर्ड की आवश्यकता होगी, एल्गोरिदम के बारे में बाकी सब कुछ स्थिर रहता है।

+3

इस मामले में आकार अच्छी तरह से जाना जाता है, जैसा कि एक GUID के लिए कहता है।यह किसी के नाम का नहीं है इसलिए कोई "श्री व्हाटचा कैलिट आईडैडपेरेंट्स व्हाउवेंटेड टोप्लेएक्टिकलजोक" नहीं है। यदि आवश्यकता बाद में बदलती है, तो बाद में स्कीमा बदलें ...। –

+0

"इसके अलावा, मुझे यह इंगित करना होगा कि आप बहुत बर्बाद प्रसंस्करण कर रहे हैं। आप एक ही नमक और हैश के माध्यम से फिर से बार-बार सुरक्षा करके बहुत अधिक सुरक्षा नहीं जोड़ रहे हैं।" मैंने http://stackoverflow.com/questions/3559437/many-hash-iterations-append-salt-every-time/3559497#3559497 – JDelage

+0

(हालांकि, मुझे आश्चर्य है कि SHA- के उपयोग के बारे में क्या कहा जा सकता है, 2/SHA-512 और SHA-1 नहीं ... लेकिन मैं कोई साइप्टो विशेषज्ञ नहीं हूं।) –

1

यदि कोई आपके नमक को जानता है, तो उनके पास शायद आपका स्रोत कोड होगा जो उन्हें 50 बार दोहराने के लिए मार्गदर्शन करता है। कि प्रकाश में, एक निश्चित गिनती के साथ पुनरावर्ती फिर से हैशिंग को तुच्छ सुरक्षा लाभ दिया, मैंने सोचा कि मैं MySQL से SHA2() उपयोग करने का सुझाव था 5.5.5+ एक neater विकल्प के रूप में:

mysql_query("SELECT SHA2(CONCAT('$password','$salt'), 512) AS `hash`;"); 

कौन सा हो जाएगा अपने VARCHAR(128)INSERT/UPDATE के लिए तैयार है।

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