编码 - 解码问题 - Codeigniter

时间:2013-06-12 06:35:17

标签: php codeigniter encryption

我在检查时使用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步字符串???

2 个答案:

答案 0 :(得分: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';

答案 1 :(得分:0)

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

更安全的方法是使用单向哈希,例如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);