使用CodeIgniter ActiveRecord进行DES_ENCRYPT

时间:2014-03-30 19:34:15

标签: mysql codeigniter activerecord

当我使用如下查询查询我的数据库时:

SELECT username, DES_DECRYPT(password) as password FROM accounts WHERE 1;

我会得到我的结果:

username | password
-------------------
testUser | pwtest

当我在CodeIgniters Active Record中执行相同操作时:

$this->db->select("username, DES_DECRYPT(password) as password");
return $this->db->get("accounts")->result_array();

我将得到以下数组:

[0] => Array
        (
            [username] => testUser
            [password] => 
        )

任何想法为什么这不起作用或如何使这项工作?

一些额外的信息:该功能也将完全带有插入:

$this->db->insert("accounts", array("username" => "test", "password" => "DES_ENCRYPT(wachtwoord)"));

这将插入(以纯文本格式)“DES_ENCRYPT(wachtwoord)”

PS。为了防止标准“最好使用散列而不是保存密码”讨论:我同意,但在这种情况下散列不是一种选择。

1 个答案:

答案 0 :(得分:0)

codeigniter不是100%完成,很可能它没有使用所有的mysql函数。而不是这样写:

$this->db->select("username, DES_DECRYPT(password) as password");

这样写:

$this->db->select("username, " . decrypt(password) . " as password");

其中decrypt是DES等同于DES_DECRYPT。 PHP等效于Mcrypt更多信息在这里找到:

https://answers.yahoo.com/question/index?qid=20071201215913AAG8QKF

还要避免以可以解密的方式加密密码。不好的做法,除了用户之外,没有人应该知道他们的密码。