【问题标题】:DES_ENCRYPT with CodeIgniter ActiveRecordDES_ENCRYPT 与 CodeIgniter ActiveRecord
【发布时间】:2014-03-30 19:34:15
【问题描述】:

当我使用这样的查询查询我的数据库时:

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)”

附言。为了防止标准的“使用哈希比保存密码更好”的讨论:我同意,但在这种情况下,哈希不是一种选择。

【问题讨论】:

    标签: mysql codeigniter activerecord


    【解决方案1】:

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

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

    这样写:

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

    其中decrypt 是DES_DECRYPT 的php 等价物。等效的 php 是 Mcrypt 更多信息在这里找到:

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

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

    【讨论】:

    • 感谢您的回答。在某些情况下,应用程序必须知道凭据(例如,才能连接其他服务)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-28
    • 2023-03-09
    • 2013-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多