首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用不同的加密方式迁移密码(CubeCart到预存储)

用不同的加密方式迁移密码(CubeCart到预存储)
EN

Stack Overflow用户
提问于 2012-10-21 08:10:32
回答 1查看 2.9K关注 0票数 1

我将客户从CubeCart转移到Prestashop,并希望保留客户现有的客户密码。

我在Prestashop论坛上找到了一篇文章,它似乎做了我需要的事情,但是,它是ZenCart/OScommerce的Prestashop。因此,我需要帮助的通剑结构略有不同,请参阅下面:

ZC/OSC

格式:1列,32个字母数字字符+冒号+2个字母数字字符盐。

例如。

e56d64755f66a86996b54114bb4102bf:08

CC

格式:2列,32个字母数字字符+一个单独的6位随机盐.

例如。

密码: e56d64755f66a86996b54114bb4102bf

盐:7 7pZcAF

因此,我希望通过修改下面的代码来使用2列CC密码/salt:

代码语言:javascript
复制
// == BEGIN ZEN-CART / OSCOMMERCE TO PRESTASHOP PASSWORD INTEGRATION ==
// == BY João Cunha - this.person@joaocunha.eti.br
// == @ 31/03/2012
// == USE AND MODIFY AT WILL
// == TESTED ON PRESTASHOP V1.4.7X
if (!$result) { //<- INVALID PRESTASHOP LOGIN, IT MAY BE A ZEN-CART / OSCOMMERCE     PASSWORD
//CHECK IF THE GIVEN EMAIL MATCHES A ROW IN OUR LEGACY TABLE AND RETRIEVES THE LEGACY     PASSWORD
$resultZC = Db::getInstance()->getRow('
SELECT `password`
FROM `zc_legacy_passwords`
WHERE `email` = \''.pSQL($email).'\'
AND `updated` = 0');

 if (!$resultZC)
return false; //<- EMAIL NOT FOUND IN NONE OF THE TABLES, SO IT IS AN INVALID LOGIN

//ENCRYPTS THE GIVEN PASSWORD IN ZEN-CART / OSCOMMERCE FORMAT
$salt = substr($resultZC['password'], strrpos($resultZC['password'],':')+1, 2);
$ZCpassword = md5($salt . $passwd) . ':' . $salt;

if ($ZCpassword != $resultZC['password'])
return false; //<- WRONG ZEN-CART/OSCOMMERCE PASSWORD GIVEN

//WE'LL UPDATE THE CUSTOMER TABLE WITH ITS PRESTASHOP ENCRYPTED PASSWORD...
Db::getInstance()->Execute('
                        UPDATE `'._DB_PREFIX_   .'customer`
                        SET `passwd` = \''.md5(pSQL(_COOKIE_KEY_.$passwd)).'\'
                        WHERE `email` = \''.pSQL($email).'\'');

//...AND FLAG IT AS UPDATED, SO THE NEXT TIME HE LOGS IN, HE WON'T ENTER THIS ROUTINE.
Db::getInstance()->Execute('
                UPDATE `zc_legacy_passwords`
                SET `updated` = 1
                WHERE `email` = \''.pSQL($email).'\'');

//USER IS AUTHENTICATED, OVERWRITE THE EMPTY $result VARIABLE
$result = Db::getInstance()->getRow('
SELECT *
FROM `'._DB_PREFIX_ .'customer`
WHERE `active` = 1
AND `email` = \''.pSQL($email).'\'
AND `deleted` = 0
AND `is_guest` = 0');
}
// == END ZEN-CART / OSCOMMERCE TO PRESTASHOP PASSWORD INTEGRATION

此代码还将将旧的盐渍密码更新为新的Prestashop密码类型。

EN

回答 1

Stack Overflow用户

发布于 2016-09-13 07:50:33

用不同的加密方式迁移密码是如此的困难,甚至是不可能的。所以,也许对你的问题来说太晚了,我认为任何想要迁移密码的人都应该尝试一个可用的方法来自动移动密码。这个工具不需要你任何技术技能,没有一些简单的点击。LitExtension是我的建议之一。当然你得付一点钱,但也不算太贵。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12996088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档