一、加密函数
function enHexie($str)
{
$list = [];
$key = ['富强', '民主', '文明', '和谐', '自由', '平等', '公正', '法治', '爱国', '敬业', '诚信', '友善'];
$arr = str_split(bin2hex($str));
foreach ($arr as $v) {
$num = hexdec($v);
if ($num < 10) {
$list[] = intval($v);
} else {
if (mt_rand(0, 1) === 1) {
$list[] = 11;
$list[] = $num - 6;
} else {
$list[] = 10;
$list[] = $num - 10;
}
}
}
$ret = '';
foreach ($list as $v) {
$ret .= $key[$v];
}
return $ret;
}
二、解密函数
function deHexie($str)
{
$list = [];
$key = ['富强', '民主', '文明', '和谐', '自由', '平等', '公正', '法治', '爱国', '敬业', '诚信', '友善'];
$len = intval(mb_strlen($str) / 2);
$arr = [];
for ($i = 0; $i < $len; $i++) {
$arr[] = array_search(mb_substr($str, $i * 2, 2), $key);
}
for ($i = 0; $i < count($arr); $i++) {
if ($arr[$i] < 10) {
$list[] = $arr[$i];
} else if ($arr[$i] == 10) {
$i++;
$list[] = dechex($arr[$i] + 10);
} else {
$i++;
$list[] = dechex($arr[$i] + 6);
}
}
$ret = hex2bin(implode($list));
return $ret;
}
【完】
1037

被折叠的 条评论
为什么被折叠?



