我在检查时使用encrypt->encode()
和encrypt->decode()
字符串会产生不同的结果。
$psss = '123456';
echo $encrypted_string = $this->encrypt->encode($psss);
OUTPUT : oOUxUQgP56AUYFe4iXWTQIGjrFhTQ8Sojandl4ZF6TB3UuigUpsGrVKOLFLl+jM1++DerX0dmrzKjyrK9XyhUQ==
上面的字符串在密码字段中保存到数据库
我提供了使用'123456'
登录的密码。
现在我用
$ psss ='123456' echo $ encrypted_string = $ this-> encrypt-> encode($ psss);
这给了我不同的结果。
答案 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);