2011-01-30 17 views
14

यह निम्न क्वेरी शून्य लौटा दी।MySQL MD5 SELECT

SELECT `email`, `password`, `salt` FROM `users` WHERE `password` = md5(`salt`+md5('123123'+`salt`)+'123123') AND `email` = '[email protected]' 

निम्न क्वेरी लौटे 'd2b4312db21705dafd96df14f8525fef', लेकिन क्यों?

SELECT md5('Vwm' + md5('123123' + 'Vwm') + '123123') 

इस कोड को लौट आए '422ad0c19a38ea88f4db5e1fecaaa920'।

$salt = 'Vwm'; 
$password = '123123'; 

echo md5($salt . md5($password . $salt) . $password); 

उपयोगकर्ता प्रमाणीकरण करें। मैं डेटाबेस में एक क्वेरी कैसे बना सकता हूं ताकि पहले एसएएलटी और एसएएलटी ने यह लिया हो कि मैंने कुछ MD5 फ़ंक्शन किया है?

+2

बस एक छोटा सा सिर, यहां तक ​​कि (डबल) नमक के साथ भी शाए 1 का उपयोग करना बेहतर होगा क्योंकि यह अधिक सुरक्षित है। Sha1 का उपयोग करने से आपकी स्क्रिप्ट अधिक भविष्य-सबूत बन जाएगी! – gnur

उत्तर

31
SELECT md5(CONCAT('Vwm', md5(CONCAT('123123', 'Vwm')), '123123')) ; 

आपको स्ट्रिंग्स() स्ट्रिंग्स को फिर से एमडी 5() निष्पादित करने की आवश्यकता है।

इस तरह इसे सही ढंग से वापस आती है अपने PHP स्क्रिप्ट के रूप में ही मूल्य: MySQL में

+--------------------------------------------------------------+ 
| md5(CONCAT('Vwm', md5(CONCAT('123123', 'Vwm')), '123123')) | 
+--------------------------------------------------------------+ 
| 422ad0c19a38ea88f4db5e1fecaaa920        | 
+--------------------------------------------------------------+ 
2
  • नमक अपनी स्क्रिप्ट में होना चाहिए
  • अपने डेटाबेस में
  • नमकीन पासवर्ड
  • अपनी स्क्रिप्ट पासवर्ड नमक मिलाना और
  • DB में नमकीन संस्करण के साथ तुलना की जाती है एक ही है, तो ठीक है पर विचार
+0

मुझे चाहिए कि प्रत्येक उपयोगकर्ता का अपना नमक हो – Isis

11

स्ट्रिंग संयोजन concat उपयोग करने की आवश्यकता() `। इस;

md5('123123' + 'Vwm') 

वास्तव में एक स्ट्रिंग को संख्या को जोड़ते हुए है:

mysql> select '12123' + 'Vwm'; 
+-----------------+ 
| '12123' + 'Vwm' | 
+-----------------+ 
|   12123 | 
+-----------------+ 

तो आपकी क्वेरी नहीं पीएचपी पक्ष के रूप में ही, आप एक ही स्ट्रिंग hashing नहीं कर रहे हैं के रूप में है।

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