为什么使用base64_encode编码 安全使用base64_encode
为什么使用base64_encode编码?设计此种编码是为了使二进制数据可以通过非纯 8-bit 的传输层传输,例如电子邮件的主体。甚至图片也可通过字串传递,然而,当字串中出现符号 '+','/','='会给地址传递造成一些混乱,所以安全使用base64_encode就很有必要了
在最近一个项目中使用了base64_encode传递中文参数,然而我遗憾的发现有些汉字经过base64_encode后会有符号 ‘+','='','',这给传递参数造成了麻烦
翻了php.net 上面有段代码这样说
[php]
function urlsafe_b64encode($string) {
$data = base64_encode($string);
$data = str_replace(array('+','/','='),array('-','_',''),$data);
return $data;
}
function urlsafe_b64decode($string) {
$data = str_replace(array('-','_'),array('+','/'),$string);
$mod4 = strlen($data) % 4;
if ($mod4) {
$data .= substr('====', $mod4);
}
return base64_decode($data);
}
[/php]
编码时使用urlsafe_b64encode,解码时用urlsafe_b64decode,当然这仍然是有问题的,但你用模拟静态 url_rewrite时,分隔符号用 '-',又造成了混乱,这时,只好把分割符号改为'.'或者其他的符号了. 为什么使用base64_encode编码 安全使用base64_encode