PHP_EOL换行 与 base64编码

Posted 根号5减1除以2

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP_EOL换行 与 base64编码相关的知识,希望对你有一定的参考价值。

  base64编码包括64个字符:10个数字(0-9),26*2个字母(a-zA-Z),+,\

  其中还有一个第65个字符=作为后缀,没有实际作用。

  来一段代码说明个问题:  

 1 <?php
 2 
 3 $str = ‘1234567‘;
 4 
 5 $en = base64_encode($str);// MTIzNDU2Nw==
 6 
 7 $en = ‘MTIzND     U 
 8 
 9      2Nw==========‘;
10 
11 echo base64_decode($en);// 1234567

可以看到,即使修改了base64编码后的内容,中间加空格、换行,后边加一堆=号,仍然可以decode出来原始的字符串。

因为base64编码没有空格、换行的字符,所以不影响。

 

今天写php和java对接一个接口时候,一个base64编码后的字符串,我看了下长度是174个字节,显然不是4的倍数(base64编码的原理决定了一定是4的倍数)。但是仍然可以decode出来。后来发现原来是多出了两个换行符。

如果希望利用4的倍数,比如我这个接口是用到RSA加密的,需要这个172,所以要替换掉换行。

php有个预定义变量PHP_EOL可以搞定

$str = str_replace(PHP_EOL, ‘‘, $str);

 

以上是关于PHP_EOL换行 与 base64编码的主要内容,如果未能解决你的问题,请参考以下文章

Base64编码后包含换行符问题

为啥Base64编码有回车换行符

Base64编码出现换行符

将base64编码的Textmate片段过滤回文本

Java Base64编码存在 情况

Base64 编码