本节分享的这个加密与解密类,支持二种加密方式,base_64encode与enc加密,并附有解密函数。
代码:
/**
* 功能:php加密与解密类
* 可用于加密、解密 cookie值或Url参数
* 编辑:www.jbxue.com
*/
class Encryption {
/**
* 设置一个难以猜测的加密种子
*
* @access public
*/
var $skey = "-_-donthackit-_-";
/**
* 安全加密URL或cookie值
*
* @access public
*/
public function safe_b64encode($string) {
$data = base64_encode($string);
$data = str_replace(array('+','/','='),array('-','_',''),$data);
return $data;
}
/**
* 解密URL或Cookie值
*
* @access public
*/
public function safe_b64decode($string) {
$data = str_replace(array('-','_'),array('+','/'),$string);
$mod4 = strlen($data) % 4;
if ($mod4) {
$data .= substr('====', $mod4);
}
return base64_decode($data);
}
/**
* 以下加密方法需要mcrypt库
*
* @access public
*/
public function enc($value){
if(!$value){return false;}
$text = $value;
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $this->skey, $text, MCRYPT_MODE_ECB, $iv);
return trim($this->safe_b64encode($crypttext));
}
/**
* 以下解密方法需要mcrypt库
*
* @access public
*/
public function dec($value){
if(!$value){return false;}
$crypttext = $this->safe_b64decode($value);
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$decrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $this->skey, $crypttext, MCRYPT_MODE_ECB, $iv);
return trim($decrypttext);
}
}
?>
调用示例:
/**
* 加密与解密数据,包括URL或cookie值等
* 示例参考
*/
require_once "Encryption.class.php";
$oEncryption = new Encryption;
echo "加 密: ".$oEncryption->enc("sudhir");
echo "
";
echo "解 密: ".$oEncryption->dec($oEncryption->enc("sudhir"));
?>