2015-09-16 25 views
6

Tôi vừa cài đặt zendcart trên hệ thống của mình, tôi đã thử hợp nhất userdatabase của trang web mà tôi đã có với cơ sở dữ liệu zendcart.Zendcart - Hợp nhất cơ sở dữ liệu người dùng hiện có với cơ sở dữ liệu zendcart

Tôi đã quản lý mọi thứ chính xác, chỉ có các mật khẩu dường như không hoạt động. md5 của riêng tôi hệ thống băm mật khẩu khi họ nhập vào DB, tôi không biết làm thế nào zencart băm nó mật khẩu nhưng theo như tôi có thể thấy là nó gần như cùng một thuật toán như tôi hiện đang sử dụng chỉ với 3 ký tự gắn liền với nó.

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

Làm thế nào tôi có thể resalt mật khẩu của tôi để phù hợp với tiêu chí zendcarts HOẶC .. làm thế nào tôi có thể sửa zendcart để chấp nhận mật khẩu muối được tạo ra bởi các phương tiện khác hơn zendcart của

Cảm ơn bạn ở cao cấp

+0

cả hai phiên bản zendcart đều giống nhau? – urfusion

+0

Lời xin lỗi của tôi cho sự nhầm lẫn, Chỉ có một trong các hệ thống là zencart, khác là một tùy chỉnh CMS – Sjef92

+0

Tôi tin rằng "zendcart" bạn có nghĩa là "Zen Cart". –

Trả lời

2

Bên class.zcPassword.php (/ bao gồm/các lớp học), bạn sẽ tìm thấy:

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

Nó mô tả di sản so sánh trước khi quyết định phải làm gì với thứ mật khẩu e, sử dụng thư viện ircmaxell/password-compat, ngay tại đây:

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.

Như bạn thấy, :c1 chỉ là hậu tố muối (ông explodes khi ông tìm thấy nó) nó đọc để xác định mà thuật toán nó sẽ chạy để duy trì tính tương thích ngược (trong trường hợp của bạn, MD5) theo phiên bản PHP, đó là lý do tại sao các hash là như nhau.

Tôi khuyên bạn nên xóa hậu tố ở cuối tất cả các mật khẩu của mình tại : điểm hoặc làm việc theo chức năng đó và các phụ thuộc của nó để bỏ qua việc kiểm tra này.

+0

Bạn gợi ý rằng chỉ cần xóa: c1 từ mật khẩu cũng sẽ hoạt động? – Sjef92

+0

@ Sjef92 Nếu hệ thống mới của bạn không chạy cùng chức năng, Zen Cart chạy để xác minh băm cũ, sau đó có. Hậu tố sẽ không cho bạn bất kỳ vấn đề gì. Nếu bạn có bất kỳ nghi ngờ về việc thực hiện nó, chỉ cần đổ cơ sở dữ liệu của bạn vào một tập tin sao lưu và làm điều đó! Nhưng tôi khá chắc chắn về nó. –

Các vấn đề liên quan