MySQL

2010-04-02 3 views
7

में SHA-512 हैश को संग्रहीत करना मैं सोच रहा था कि क्या मैं sha512 हैश उत्पन्न करने के लिए PHP के हैश() फ़ंक्शन का उपयोग करता हूं, तो मेरा MySQL तालिका फ़ील्ड शेड पासवर्ड रखने में सक्षम होने के लिए कैसा दिखता है।MySQL

यहाँ मेरे वर्तमान MySQL पासवर्ड फ़ील्ड लेआउट

char(40) 
+0

"डेटा प्रकार" पर MySQL संदर्भ मैन्युअल अनुभाग की समीक्षा करें: http://dev.mysql.com/doc/refman/5.1/en/data-types.html – bdl

उत्तर

17

एक SHA512 हैश एक 128 वर्ण-लंबी स्ट्रिंग के रूप में प्रतिनिधित्व कर रहा है।

उदाहरण के लिए

, कोड की निम्न भाग:

128 


जिसका मतलब है अपने char(40) अभी तक बहुत छोटा है, और आप एक char(128) का उपयोग करना चाहिए कि:

$sha512 = hash('sha512', "Hello, World!"); 
echo strlen($sha512); 

इस उत्पादन देंगे ।


एक और समाधान इसे बाइनरी रूप में स्टोर करना होगा, न कि एक स्ट्रिंग - जिसका मतलब 64 बाइट होगा।

लेकिन ध्यान दें कि उस प्रस्तुति से निपटना मुश्किल हो सकता है, कुछ मामलों में, मुझे लगता है।

+0

क्या आप समझा सकते हैं कि आपको 64 बाइट कहां से मिले? मैं गणित को समझने की कोशिश कर रहा हूं। –

+1

एक sha512 को 128 हेक्साडेसिमल वर्णों के रूप में दर्शाया गया है; हेक्साडेसिमल का उपयोग करते समय, आप एक बाइट (0x00 से 0xFF तक) का प्रतिनिधित्व करने के लिए दो अंकों का उपयोग करते हैं; इसलिए, एक बाइनरी मान को स्टोर करने के लिए जिसे 128 हेक्साडेसिमल वर्णों द्वारा दर्शाया जा सकता है, आपको 64 बाइट्स की आवश्यकता होती है, अगर इसे बाइनरी के रूप में संग्रहीत किया जाता है, और हेक्साडेसिमल टेक्स्ट नहीं होता है। –

+0

समझ में आता है। धन्यवाद! –

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