基于mcrypt扩展,按位异或总结的两个字符串加密解密算法
/**
* @info 字符串加密解密算法一,利用mcrypt扩展
* @param string
$string 待处理字符串
* $action
ENCODE,加密 | DECODE,解密
* @return string $returnstr
* @date
2014/4/22
* @author tonglei
*/
function
mcrypt_handle_string($string, $action = ‘ENCODE‘)
{
!is_array($string) or exit;
$action == ‘DECODE‘ && $string =
base64_decode($string);
$key =
"123456"; //key可自定义或在配置文件中获取
$mcryptAlgorithm = MCRYPT_DES; //选择一种加密算法
$mcryptMode = MCRYPT_MODE_ECB;
//选择一种加密模式
$mcryptIv =
mcrypt_create_iv(mcrypt_get_iv_size($mcryptAlgorithm,
$mcryptMode),
MCRYPT_RAND); //创建初始化向量
$returnstr =
base64_encode(mcrypt_encrypt($mcryptAlgorithm, $key, $string,
$mcryptMode,
$mcryptIv));
if(‘DECODE‘ == $action)
{
$returnstr = mcrypt_decrypt($mcryptAlgorithm, $key, $string, $mcryptMode,
$mcryptIv);
}
return $returnstr;
}
/**
*
* @info 字符串加密解密算法二 利用按位异或
* @param string $string
待处理字符串
* @param $action ENCODE 加密 | DECODE 解密
* @return
string
*/
function StrCode($string, $action =
‘ENCODE‘)
{
$action != ‘ENCODE‘
&& $string = base64_decode($string);
$code = ‘‘;
$key =
substr(md5($GLOBALS[‘pwServer‘][‘HTTP_USER_AGENT‘] .
$GLOBALS[‘db_hash‘]),
8, 18);
$keyLen = strlen($key);
$strLen =
strlen($string);
for ($i = 0; $i <
$strLen; $i++)
{
$k = $i %
$keyLen;
$code .= $string[$i] ^ $key[$k];
}
return
($action != ‘DECODE‘ ? base64_encode($code) : $code);
}
原文:http://www.cnblogs.com/dytl/p/3681204.html