2015-09-16 16 views
6

Ho appena installato zendcart sul mio sistema, ho provato a unire il database utente del sito che avevo già con il database di zendcart.Zendcart - Unione di database utente esistente con database zendcart

Sono riuscito a portare tutto correttamente, solo le password non sembrano funzionare. il mio sistema md5 hash le password quando entrano nel DB, non so come zencart hash la sua password ma per quanto posso vedere è quasi lo stesso algoritmo che attualmente uso solo con 3 caratteri ad esso collegati.

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

Come posso resalt mie password per abbinare zendcarts criteri, O .. come posso modificare zendcart per accettare le password salate generati da altri mezzi di quella di

Grazie in anticipo

+0

entrambe le versioni di zendcart sono uguali? – urfusion

+0

Le mie scuse per la confusione, Solo uno dei sistemi è zencart, l'altro è un CMS personalizzato – Sjef92

+0

Credo che per "zendcart" intendi "Zen Cart". –

risposta

2

All'interno class.zcPassword.php zendcart (/ include/classes), lo troverete:

/** 
    * 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 

esso descrive l'eredità confrontare lo fa prima di decidere cosa fare con th e le password, utilizzando la libreria ircmaxell/password-compat, proprio qui:

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 
    } 

EDIT: //commented the code.

Come si può vedere, :c1 è solo il suffisso sale (ha explodes quando lo trova) si legge per definire quale algoritmo dovrebbe eseguire per mantenere la compatibilità con le versioni precedenti (nel tuo caso, MD5) in base alla versione di PHP, ecco perché gli hash sono gli stessi.

Suggerirei di rimuovere il suffisso alla fine di tutte le password al punto : o di lavorare su quella funzione e le sue dipendenze in modo da ignorare questo controllo.

+0

Ti suggerisco di rimuovere anche: c1 dalla password? – Sjef92

+0

@ Sjef92 Se il nuovo sistema non esegue la stessa funzione, Zen Cart viene eseguito per verificare l'hashing legacy, quindi si. Il suffisso non ti darà alcun problema. Se hai qualche dubbio sull'implementazione, scarica semplicemente il tuo database in un file di backup e fallo! Ma ne sono abbastanza sicuro. –

Problemi correlati