2015-09-16 30 views
6

Właśnie zainstalowałem zendcart w moim systemie, próbowałem scalić bazę danych użytkownika witryny, którą już miałem z bazą danych zendcart.Zendcart - Scalanie istniejącej bazy danych użytkownika z bazą danych zendcart

Udało mi się poprawnie przesłać wszystko, tylko hasła nie działają. mój własny system md5 hashe hasła, gdy wchodzą do DB, nie wiem jak zencart hashe to hasło, ale o ile widzę, to prawie taki sam algorytm jak obecnie używam tylko z 3 znaków dołączonych do niego.

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

Jak mogę resalt moje hasło, aby dopasować zendcarts kryteria, OR .. jak mogę edytować zendcart przyjąć solone haseł generowanych za pomocą innych środków niż zendcart na

Dziękuję w zaawansowanej

+0

obie wersje zendcart są takie same? – urfusion

+0

Moje przeprosiny za zamieszanie, Tylko jeden z systemów to zencart, drugi to niestandardowy CMS – Sjef92

+0

Wierzę, że przez "zendcart" rozumiesz "Zen Cart". –

Odpowiedz

2

Wewnątrz class.zcPassword.php (/ includes/classes), znajdziesz to:

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

Opisuje to dziedzictwo, które porównuje przed podjęciem decyzji, co zrobić z Hasła E, z wykorzystaniem biblioteki ircmaxell/password-compat, tutaj:

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.

Jak widać, :c1 jest tylko przyrostek sól (on explodes gdy ją znajdzie) odczytuje do zdefiniowania który algorytm powinien działać, aby zachować kompatybilność wsteczną (w twoim przypadku, MD5) zgodnie z wersją PHP, dlatego skróty są takie same.

Proponuję po prostu usunąć przyrostek na końcu wszystkich haseł w punkcie : lub pracować nad tą funkcją i jej zależnościami, aby zignorować to sprawdzanie.

+0

Sugerujesz, że samo usunięcie: C1 z hasła również by działało? – Sjef92

+0

@ Sjef92 Jeśli twój nowy system nie obsługuje tej samej funkcji, Zen Cart uruchamia się, aby zweryfikować starsze hashu, a następnie tak. Przyrostek nie sprawi ci żadnych problemów. Jeśli masz jakiekolwiek wątpliwości dotyczące implementacji, po prostu zrzuty bazy danych do pliku kopii zapasowej i zrób to! Ale jestem tego pewien. –

Powiązane problemy