zoukankan      html  css  js  c++  java
  • 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);
  • 相关阅读:
    一分钟 解决Tomcat端口 占用问题
    Java 自定义注解
    Java 解析自定义XML文件
    Junit(手动/自动)加载
    Java思维题
    SSM框架中使用日志框架
    DAC
    SPI接口的FLASH
    晶振测试起振方法
    Jlink不报错的方法
  • 原文地址:https://www.cnblogs.com/firstForEver/p/6392151.html
Copyright © 2011-2022 走看看