<?php
/**
* * 用於字串的 URL 參數方式傳遞的編碼 encode
* */
//$sXorKey = "ckaua71/|&^$%!@9&#@&9237:;:""[[615kdhak";
$sXorKey = "ckaua71/|&^$%!@9&#@&9237:;:""[[61asdfsfd5kdha324@#!%adasfdafasdfk";
//$sPrivateKey = "fzja2qjdfasf_|`jau7z7cvja"";
$sPrivateKey = "fzja2qjdfasf_|`jau7z7cvjadfasfsafasfsadfasf343353453546fj7r89678a"";
function BinXorEncode($sInput) {
global $sXorKey, $sPrivateKey;
$sOut = $sInput ^ str_repeat($sXorKey, ceil(strlen($sInput)/strlen($sXorKey)));
$sOut = pack("H*", md5($sOut.$sPrivateKey)).$sOut;
$sOut = base64_encode($sOut);
$sOut = str_replace("+", ",", $sOut);
$sOut = str_replace("/", "_", $sOut);
$sOut = str_replace("=", ".", $sOut);
return $sOut;
}
/**
* * 用於字串的 URL 參數方式傳遞的編碼 decode
* */
function BinXorDecode($sInput) {
global $sXorKey, $sPrivateKey;
$sInput = str_replace(",", "+", $sInput);
$sInput = str_replace("_", "/", $sInput);
$sInput = str_replace(".", "=", $sInput);
$sInput = base64_decode($sInput);
$sHash = bin2hex(substr($sInput, 0, 16));
$sInput = substr($sInput, 16);
if ($sHash != md5($sInput.$sPrivateKey)) { return false; }
$sOut = $sInput ^ str_repeat($sXorKey, ceil(strlen($sInput)/strlen($sXorKey)));
return $sOut;
}
$string = "我要加密怎麼著吧有什麼不服的我就不服你了";
$encode = BinXorEncode($string);
$decode = BinXorDecode($encode);
echo "String:|".$string."| ";
echo "Encode:|".$encode."| ";
echo "Decode:|".$decode."| ";
?>
輸出:
String:|我要加密
怎麼著吧
有什麼不服的
我就不服你了|
Encode:|ZP,dd3V5X0nAf,WH9a59Fq25s9_d5PKAdvKr55H2hYnvKZP284Dwg4iAjdyXn1H449,,1t3EmKDWqq8.|
Decode:|我要加密
怎麼著吧
有什麼不服的
我就不服你了|