php base 64符号化復号化手動実装
1680 ワード
base 64符号化原理
GB_2312文字セットは現在最もよく使われている漢字符号化基準である.この規格では、漢字毎に2バイトで表され、各バイトのascii符号は161−254(16進A 1−FE)であり、第1バイトはブロック符号の1−94領域に対応し、第2バイトはビット符号の1−94ビットに対応する.
漢字のunicode符号化範囲はu 4 e 00~u 94 a 5 UTF-8文字セット1漢字局3バイト:参照リンク
";
echo base64_decode($base);
echo "
";
$code = encode64($str);
echo $code,"
";
echo $decode = decode64($code);
function encode64($str){
$base64 = implode("",range('A','Z')).implode("",range('a','z')).implode("",range('0','9'))."+/";
if($str=="") return false;
$binStr = StrToBin($str);
$more = 0;
$encodeStr = "";
for($i=0;$i 8
$binStr = substr($binStr,0,strlen($binStr)-$more*2);
return BinToStr($binStr);
}
function StrToBin($str){
$arr = preg_split("/(? 0 && $mod < 8)
$bin8 = str_repeat("0",$mod).$bin8;
$binStr .= $bin8;
}
return $binStr;
}
function BinToStr($str){
$binArr = array();$index=0;$index2=0;
for($i=0;$i$v){
$hex = base_convert($v, 2, 16);
$v = pack("H".strlen($hex),$hex);
$deArr[$k] = $v;
}
return join("",$deArr);
}