简单对称算法
class Symmetry
{
/**
* 简单对称加密算法之加密
* @param String $string 需要加密的字串
* @param String $skey 加密EKY
* @return String
*/
public static function encode($string = '', $skey = 'cxphp')
{
//先使用 MIME base64 对数据进行编码后的字符串转换为数组
$strArr = str_split(base64_encode($string));
//计算数组中单元数目
$strCount = count($strArr);
//拼接上加密KEY
foreach (str_split($skey) as $key => $value) {
$key < $strCount && $strArr[$key] .= $value;
}
//替换字符返回加密字符串
return str_replace(array('=', '+', '/'), array('O0O0O', 'o000o', 'oo00o'), join('', $strArr));
}
/**
* 简单对称加密算法之解密
* @param String $string 需要解密的字串
* @param String $skey 解密KEY
* @return String
*/
public static function decode($string = '', $skey = 'cxphp')
{
//反替换字符串,在变为数组
$strArr = str_split(str_replace(array('O0O0O', 'o000o', 'oo00o'), array('=', '+', '/'), $string), 2);
$strCount = count($strArr);
foreach (str_split($skey) as $key => $value) {
$key <= $strCount && isset($strArr[$key]) && $strArr[$key][1] === $value && $strArr[$key] = $strArr[$key][0];
}
return base64_decode(join('', $strArr));
}
}