OpenCart客户密码加密

时间:2014-07-30 16:52:11

标签: ios encryption md5 opencart

在我的iOS应用程序中,我试图允许用户使用OpenCart系统中已有的当前用户信息登录商店。如果我理解正确,则使用MD5加密密码。当我从应用程序加密密码时,它与数据库中存储的密码不匹配。有关为什么会这样的任何建议?关于如何解决它的任何建议?这是我第一次做过这类事情。

2 个答案:

答案 0 :(得分:6)

根据OpenCart的用户模型,密码加密比MD5更复杂:

public function addUser($data) {
    $this->db->query("INSERT INTO `" . DB_PREFIX . "user` SET username = '" . $this->db->escape($data['username']) . "', salt = '" . $this->db->escape($salt = substr(md5(uniqid(rand(), true)), 0, 9)) . "', password = '" . $this->db->escape(sha1($salt . sha1($salt . sha1($data['password'])))) . "', firstname = '" . $this->db->escape($data['firstname']) . "', lastname = '" . $this->db->escape($data['lastname']) . "', email = '" . $this->db->escape($data['email']) . "', user_group_id = '" . (int)$data['user_group_id'] . "', status = '" . (int)$data['status'] . "', date_added = NOW()");
}

首先你生成这样的盐:

$salt = substr(md5(uniqid(rand(), true)), 0, 9);

然后加密密码:

$password = sha1($salt . sha1($salt . sha1($data['password'])));

答案 1 :(得分:1)

我对上面的代码做了一些修改。

$password = sha1($salt . sha1($salt . sha1($password)))

另外,在这种情况下我没有生成新用户,我只是加密密码然后将其与数据库进行比较。就此而言,我确实有一个安全问题。更好的是在手机上加密然后推送它,还是更好地推送普通文本然后用服务加密?后者就是我目前正在做的事情。