2015-09-16 4 views
6

के साथ मौजूदा उपयोगकर्ता डेटाबेस को विलय करना मैंने अभी अपने सिस्टम पर ज़ेंडकार्ट स्थापित किया है, मैंने साइट के उपयोगकर्ता डेटाबेस को विलय करने का प्रयास किया है जो मेरे पास पहले से ही ज़ेंडकार्ट डेटाबेस के साथ था।ज़ेंडकार्ट - ज़ेंडकार्ट डेटाबेस

मैंने सब कुछ सही ढंग से बंदरगाह करने में कामयाब रहा है, केवल पासवर्ड काम नहीं कर रहे हैं। जब मैं डीबी में प्रवेश करता हूं, तो मेरी खुद की प्रणाली एमडी 5 पासवर्ड पास करती है, मुझे नहीं पता कि ज़ेनकार्ट ने इसका पासवर्ड कैसे रखा है, लेकिन जहां तक ​​मैं देख सकता हूं कि यह लगभग उसी एल्गोरिदम है क्योंकि मैं वर्तमान में केवल 3 अक्षरों से जुड़ा हूं।

ex current password: sad97213sd123js123 
ex zendcart pass: sad97213sd123js123:c1 

मैं कैसे zendcarts मापदंडों से मेल खाती मेरे पासवर्ड resalt कर सकते हैं, या .. मैं कैसे की तुलना में अन्य तरीकों से उत्पन्न नमकीन पासवर्ड को स्वीकार करने के zendcart संपादित कर सकते हैं zendcart के

class.zcPassword.php अंदर उन्नत

+0

दोनों ज़ेंडकार्ट संस्करण समान हैं? – urfusion

+0

भ्रम के लिए मेरी माफ़ी, केवल सिस्टम में से एक ज़ेनकार्ट है, दूसरा एक कस्टम सीएमएस – Sjef92

+0

है जिसका मानना ​​है कि "ज़ेंड कार्ट" का अर्थ है "ज़ेन कार्ट"। –

उत्तर

2

में धन्यवाद (/ शामिल/कक्षाएं), आपको यह मिल जाएगा:

/** 
    * Determine the password type 
    * 
    * Legacy passwords were hash:salt with a salt of length 2 
    * php < 5.3.7 updated passwords are hash:salt with salt of length > 2 
    * php >= 5.3.7 passwords are BMCF format 

यह निर्णय लेने से पहले विरासत की तुलना करता है कि यह तय करने से पहले कि क्या करना है ई पासवर्ड, ircmaxell/password-compat लाइब्रेरी का उपयोग कर, यहीं:

function detectPasswordType($encryptedPassword) 
    { 
    $type = 'unknown'; 
    $tmp = explode(':', $encryptedPassword); // try to break the hash in an array of 2 elements at :, first being the hash, second a suffix 
    if (count($tmp) == 2) { // if it breaks... 
     if (strlen($tmp [1]) > 2) { //...then check if 2nd has a length > 2... 
     $type = 'compatSha256'; //...if it does, it's SHA2 
     } elseif (strlen($tmp [1]) == 2) {//...if not, make sure it's == 2... 
     $type = 'oldMd5';// ...just to confirm it's MD5 
     } 
    } 
    return $type; // and return the string to be treated ahead 
    } 

संपादित: //commented the code.

आप देख सकते हैं, :c1 सिर्फ नमक प्रत्यय (वह explodes वह इसे जब पाता है) इसे परिभाषित करने पढ़ता है PHP संस्करण के अनुसार पिछड़ा संगतता (आपके मामले में, एमडी 5) को बनाए रखने के लिए इसे कौन सा एल्गोरिदम चलाना चाहिए, यही कारण है कि हैंश समान हैं।

मेरा सुझाव है कि आप : बिंदु पर अपने सभी पासवर्ड के अंत में प्रत्यय को हटा दें या उस कार्य को अनदेखा करने के लिए उस कार्य और इसकी निर्भरताओं पर कार्य करें।

+0

आप सुझाव देते हैं कि बस हटाएं: पासवर्ड से सी 1 भी काम करेगा? – Sjef92

+0

@ Sjef92 यदि आपका नया सिस्टम एक ही फ़ंक्शन नहीं चलाता है तो जेन कार्ट विरासत हैशिंग को सत्यापित करने के लिए चलाता है, फिर हां। प्रत्यय आपको कोई समस्या नहीं देगा। यदि आपको इसे लागू करने के बारे में कोई संदेह है, तो बस अपने डेटाबेस को बैकअप फ़ाइल में डंप करें और इसे करें! लेकिन मुझे इसके बारे में बहुत यकीन है। –