<?php
class Mcrypt
{
private static $key = "fsdjfojojodjiovjojgfosdjfiojio";
private static $iv = "y5v8s/N6PHurb/tqcwt4uw==";
//private static $key = "!AS39(#al*%";
//private static $iv = "sjA34kd9)_+";
/**
* cookie解密
* @author zhaozhongyi
* $encryptedData 二进制的密文;
*/
public static function Decrypt($encryptedData) {
if(empty($encryptedData))
{
return $encryptedData;
}
$encryptedData = base64_decode($encryptedData);
$keyv = base64_decode(self::$key);
$ivv = base64_decode(self::$iv);
$data = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $keyv, $encryptedData, MCRYPT_MODE_CBC, $ivv);
//echo "<br/>data = ";
//print_r($data);
$data = self::stripPKSC7Padding($data);
//echo "<br/>data = ";
//print_r($data);
return $data;
}
/**
* cookie加密
* @author zhaozhongyi
* $encryptedData 需加密字符;
*/
public static function Ecrypt($encryptedData) {
if(empty($encryptedData))
{
return $encryptedData;
}
//echo "<br/>encryptedData = ";
//echo $encryptedData;
$encryptedText = self::paddingPKCS7($encryptedData);
//echo "<br/>encryptedText = ";
//echo $encryptedText;
$keyv = base64_decode(self::$key);
$ivv = base64_decode(self::$iv);
return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $keyv, $encryptedText, MCRYPT_MODE_CBC, $ivv));
}
/**
* PKSC7解密算法
*/
private static function stripPKSC7Padding($string){
if(empty($string))
{
return $string;
}
$slast = ord(substr($string, -1));
$slastc = chr($slast);
$pcheck = substr($string, -$slast);
if(preg_match("/$slastc{".$slast."}/", $string)){
$string = substr($string, 0, strlen($string)-$slast);
return $string;
} else {
return false;
}
}
/**
* PKSC7加密算法
*/
private static function paddingPKCS7($data)
{
if(empty($data))
{
return $data;
}
$block_size = mcrypt_get_block_size('rijndael-128', 'cbc');
$padding_char = $block_size - (strlen($data) % $block_size);
$data .= str_repeat(chr($padding_char), $padding_char);
return $data;
}
}