该加密是参考CI
框架写的。
<?php
header('Content-Type:text/html;charset=utf-8');
date_default_timezone_set('PRC');
$string = 'This is a encode string';
$key = 'this is a key!!';
function encodestr($str = '', $key = '') {
$key = md5($key);
$init_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC);
$init_vect = mcrypt_create_iv($init_size, MCRYPT_RAND);
$encrypt = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $str, MCRYPT_MODE_CBC, $init_vect);
$data = $init_vect.$encrypt;
$keyHash = sha1($key);
$keylen = strlen($keyHash);
$encodestr = '';
for($i=0,$j=0,$len=strlen($data); $i<$len; ++$i,++$j) {
if ($j >= $keylen)
{
$j = 0;
}
$encodestr .= chr(ord($data[$i]) + ord($keyHash[$j]) % 256);
}
return base64_encode($encodestr);
}
function decodestr($encodestr = '', $key = '') {
$key = md5($key);
$keyHash = sha1($key);
$keylen = strlen($keyHash);
$data = base64_decode($encodestr);
$decodestr = '';
for($i=0,$j=0,$len=strlen($data); $i < $len; ++$i,++$j)
{
if($j >= $keylen)
{
$j = 0;
}
$temp = ord($data[$i]) - ord($keyHash[$j]);
if($temp < 0)
{
$temp = $temp + 256;
}
$decodestr .= chr($temp);
}
$init_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC);
if ($init_size > strlen($decodestr))
{
return FALSE;
}
$init_vect = substr($decodestr, 0, $init_size);
$decodestr = substr($decodestr, $init_size);
return rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $decodestr, MCRYPT_MODE_CBC, $init_vect), "\0");
}
$re = encodestr($string, $key);
echo decodestr($re,$key);
?>
框架写的。