一般用到的对称加密中DES还算比较简单的一种
这个方法呢就是我们要将需要加密的字符串$str放入,同时还需要自定义一个$key放进去,然后方法返回加密后的字符串
$key自己定义,如果为了更安全也可以自己再写一个MD5或者再添加点儿调料
把下面的这三个方法直接放到控制器或者模型层调用即可
直接上代码
/*
*功能:对字符串进行加密处理
*参数一:需要加密的内容
*参数二:密钥
*/
function passport_encrypt($str,$key){ //加密函数
srand((double)microtime() * 1000000);
$encrypt_key=md5(rand(0, 32000));
$ctr=0;
$tmp='';
for($i=0;$i<strlen($str);$i++){
$ctr=$ctr==strlen($encrypt_key)?0:$ctr;
$tmp.=$encrypt_key[$ctr].($str[$i] ^ $encrypt_key[$ctr++]);
}
return base64_encode($this->passport_key($tmp,$key));
}
这里的辅助函数就是为加密和解密这两个函数提供配置供它两调用的
/*
*辅助函数
*/
function passport_key($str,$encrypt_key){
$encrypt_key=md5($encrypt_key);
$ctr=0;
$tmp='';
for($i=0;$i<strlen($str);$i++){
$ctr=$ctr==strlen($encrypt_key)?0:$ctr;
$tmp.=$str[$i] ^ $encrypt_key[$ctr++];
}
return $tmp;
}
解密函数也就是将我们加密后生成的字符串再放到解密函数中,同时再将$key也放进来,这样解密函数就会返回最初的那个字符串了
/*
*功能:对字符串进行解密处理
*参数一:需要解密的密文
*参数二:密钥
*/
function passport_decrypt($str,$key){ //解密函数
$str=$this->passport_key(base64_decode($str),$key);
$tmp='';
for($i=0;$i<strlen($str);$i++){
$md5=$str[$i];
$tmp.=$str[++$i] ^ $md5;
}
return $tmp;
}