2015-05-06 115 views
2

您好,希望我可以指出正确的方向,并获得一些澄清,因为我现在感到困惑。密码加密使用opencart数据库进行全网登录

我有一个网站,也有opencart(版本1.5.6.1)附上两个风格看起来一样。我已经到了需要用户登录到我的网站上的服务的地步,但是我并不想让用户创建两组数据,一个用于商店,另一个用于我的服务。我已经完成了研究,发现我可以将信息添加到opencart数据库中,而不是拥有两个独立的数据库。

全部进行得很顺利,直到我来到了密码加密,Opencart的(显然)使用“盐SHA1”加密

凡为我使用的网站上的工具有这样的代码(MD5加密):

$crypt_pwd = md5($password); 

我知道我在这里问的是比较愚蠢的问题,但是如何将我的网站代码支持添加到同一加密中?哪怕只是在正确的方向的指针会有帮助:)

回答

3

其实Opencart的支持计划,所以你应该只使用在客户表中的md5哈希密码被罚款。在这种情况下,您可以简单地将盐留空。

作为参考点,来看看这个查询中system/library/customer.phplogin()方法中使用,其是该登录的验证时间:

SELECT * FROM customer 
WHERE LOWER(email) = '" . $this->db->escape(utf8_strtolower($email)) . "' 
    AND 
    (
     password = SHA1(CONCAT(salt, SHA1(CONCAT(salt, SHA1('" . $this->db->escape($password) . "'))))) 
     OR password = '" . $this->db->escape(md5($password)) . "' 
    ) 
    AND status = '1' 
    AND approved = '1' 

注意,数据库字段针对任一SHA1盐匹配OR md5哈希版本。

+0

嗨,感谢您花时间回答,但是您的回答有一个问题,但是我一直在玩这一整天无济于事,我仍然有一个问题:S(我不是一个程序员) 如果我在网站的一侧创建了一个登录信息,我可以使用相同的信息登录到opencart。但是,如果使用opencart创建登录信息,它会“盐化”它,并且无法使用该用户详细信息登录到站点的一侧。我试过加入 或者$ crypt_pwd = SHA1($ password); 没有做任何事情:(我不认为我真正理解这个盐的东西,它从哪里得到它的价值:s对不起大声笑 – Canderson90

+1

我的建议是要么修改opencart插入严格使用md5散列和/或重定向流量所以所有的注册都在一个页面上进行,看看'/ catalog/model/account/customer.php' - 特别是'addCustomer()'和'editPassword()'方法。例如'password ='“。$ this-> db-> escape(md5($ password))。”'''和'salt ='''希望对你有意义。 – billynoah

相关问题