我有问题检查encrypt->encode()
和encrypt->decode()
一个字符串给出不同的结果。
$psss = '123456';
echo $encrypted_string = $this->encrypt->encode($psss);
OUTPUT : oOUxUQgP56AUYFe4iXWTQIGjrFhTQ8Sojandl4ZF6TB3UuigUpsGrVKOLFLl+jM1++DerX0dmrzKjyrK9XyhUQ==
以上字符串Save to DB at password field
I提供密码登录
'123456'
现在我使用
$psss = '123456'echo $encrypted_string = $this->encrypt->encode($psss);
- 我如何比较Db字符串和步骤5字符串??
直接替换
$this->encrypt->encode($pass);
$this->encrypt->decode($pass);
你需要解码加密的密码,但你再次编码它…要加密你的密码你需要使用一个密钥你需要使用相同的密钥来解码它,比如
$key = "Some key";
$encypted = $this->encrypt->encode($pass , $key);
将此$加密存储到您的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';
您的代码使用可逆加密,使得从数据库读取密码并解密它成为可能。
更安全的方法是使用单向散列,如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);