【问题标题】:Encode-Decode Issue - Codeigniter编码-解码问题 - Codeigniter
【发布时间】:2013-06-12 06:35:16
【问题描述】:

我在检查encrypt->encode()encrypt->decode() 给出不同结果的字符串时遇到问题。

$psss = '123456';
echo $encrypted_string = $this->encrypt->encode($psss);
OUTPUT : oOUxUQgP56AUYFe4iXWTQIGjrFhTQ8Sojandl4ZF6TB3UuigUpsGrVKOLFLl+jM1++DerX0dmrzKjyrK9XyhUQ==
  1. 以上字符串保存到数据库的密码字段

  2. 我提供密码以使用'123456'登录。

  3. 现在我习惯了

    $psss = '123456' echo $encrypted_string = $this->encrypt->encode($psss);

  4. 这给了我不同的结果。

  5. 如何比较 Db 字符串和第 5 步字符串?

【问题讨论】:

  • 不要使用可逆的方法来处理密码看看openwall.com/phpass
  • 请不要在您的数据库中存储加密密码。如果有人掌握了您的数据库并知道(或可以猜到)密钥,他们将可以访问您存储的每个密码。如果他们拥有您的数据库,那么他们已经可以访问您的服务器并找到您的密钥的可能性有多大?单向散列是一种更安全的策略 - 即使他们完全访问您的代码和数据库,如果没有详尽的散列计算,他们将无法解码任何密码 - 每次重复用户。
  • 嗨,1. 发布电子邮件和密码 2. 我使用发布的电子邮件从 Db 获取密码 3. 使用 "$this->encrypt->decode($DBpass);" 解码该密码 4. 现在比较 POSTED 和 DECODED 密码

标签: php codeigniter encryption


【解决方案1】:

只需替换

$this->encrypt->encode($pass);

$this->encrypt->decode($pass);

您需要对加密的密码进行解码,但您再次对其进行编码......并且要加密您的密码,您需要使用密钥,并且您需要使用相同的密钥来解码它

$key = "Some key";
$encypted = $this->encrypt->encode($pass , $key);

将此 $encypted 存储到您的 Db 并像解码一样

$this->encrypt->decode($pass , $key);

你可以检查一下

$pass = $this->encrypt->encode($_REQUEST['pass']);// this change every time 
if($pass == $DB_Pass)
    echo 'Welcome user';
else
    echo 'Wrong Password';

【讨论】:

  • 不。这是一个原始密码。应该用 salt / key 加密。或者随机的盐/密钥会导致不同的结果。
  • @CORRUPT 我刚刚告诉他他犯下的主要错误,我认为他会使用密钥进行加密......这是一件愚蠢的事情,没有理由拒绝它
  • 好的 ...完成它的反对者。请参阅我的编辑...我还提到了需要...
  • 什么意思..??每次都变..??
  • $pass = $this->encrypt->encode($_REQUEST['pass']);每次它给出不同的加密代码
【解决方案2】:

您的代码使用可逆加密,因此可以从数据库中读取密码并对其进行解密。

一种更安全的方法是使用单向哈希,例如 sha1

$psss = '123456';
echo $encrypted_string = sha1($psss);

为了更安全,也可以使用盐:

$psss = '123456';
$salt = rand(0, 1000000);
echo $encrypted_string = sha1($psss . $salt);
// save both $encrypted_string and $salt to the database

解码

$salt = 123; // load salt from database based on requested user id
$psss = $_POST['password'];
echo $encrypted_string = sha1($psss . $salt);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-22
    • 1970-01-01
    • 1970-01-01
    • 2015-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多