base64_encode与base64_decode加密解密

本文详细介绍了Base64编码和解码的基本原理及PHP实现方式,包括如何使用base64_encode和base64_decode函数处理字符串和图片数据,以及在非纯8-bit传输层中确保数据正确传输的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

base64_encode语法:string base64_decode(string data);
$string='d3d3LmpiNTEubmV0IOiEmuacrOS5i+Wutg==';
echo base64_decode($string); //输出解码后的内容
说明:
    1.设计此种编码是为了使二进制数据可以通过非纯 8-bit 的传输层传输,例如电子邮件的主体
    2.编码后的字符串数据, 或者在失败时返回 FALSE。


base64_encode语法:string base64_encode(string data);
$str='www.jb51.net 脚本之家';
echo base64_encode($str);  // 输出编码后的内容为: d3d3LmpiNTEubmV0IOiEmuacrOS5i+Wutg==
说明:
    strict 当设置 strict 为 TRUE 时,一旦输入的数据超出了 base64 字母表,将返回 FALSE。 否则会静默丢弃无效的字符。

优缺点
1.Base64-encoded 数据要比原始数据多占用 33% 左右的空间
2.便于网络传输

图片base64编码解码
    /*首先要确定图片的类型,需要安装一个php拓展php_fileinfo
      如已安装可以在extension_dir目录下找到php_fileinfo.dll(windows),fileinfo.so(linux)
      打开php.ini,把extension=php_fileinfo.dll前的";"去掉,然后重启apache。
    */
    $file = 'tupian.png';
    $fi = new finfo(FILEINFO_MIME_TYPE);
    $mime_type = $fi->file($file); //image/jpeg
    //然后读取内容进行编码,拼接(建议用file_get_contents,因为是二进制,如果用fopen、fread就得模式要加b)
    $base = 'data:'.$mime_type.';base64,'.base64_encode(bafile_get_contents($file)); //获得编码结果

图片base64解码
$base = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFEAAABRCAYAAACqj0o2AAAEdUlEQVR4Xu2cgbEMQRCG+0WACBABIkAEiAARIAJEgAgQASJABIgAESAC6qvaqTrr1k7P9j8zdzdTdeU9b7d35tvunp6enjuz0TYTONssYQiwATFACQbEATGAQICInjTxvJndMrOr04fh8TPt886//PzOzH4GjD9ERA8Q75rZPTO74RwRMF+Z2evWQFtCBN4TM7vkhDe//NskB5hNWguIQHuzY6pRA0cz7++YfpTcVTm1IWKyAMT/KRp+EpBvFcKXZNaEiN97WWlwgMRfVmm1IN6eNLDKoKaHVANZAyJhynuhCS+9GEz7Zg0fqYaI7/sUMAOXajAgL6tDIDVEQpjHpQSC7ns6hUBB4v4Vo4SIFn5tYMb7YKGNxJOSpoT43MweSHrtF0ogTnQgaUqIPzrRQsDhGy9ICJrJ8onMyEwoPbU7qiBcpYk9mXJ6kTKTVkH8YGbXe1LDaWJhgglvKog9+cNdaJLxSoSa2e/w1x0jUDJehVBSXcSHPTaWgbia0DYgBuBUQKRbw5wDXs6AGACxxxDnuyqbpDJnsspsRPXUDi7YbpHJXnthsky3ShPTov/c2sgq/p0EhGTDXwmxJ5OmYgLrkDQlxJ6C7oNNyvLWe9gekE0oSa2Vmsgz2CIgLd/KN/6aKi1kWwMMUg2RZ1D1wJZpiyZLxO4OpgZEnlez+iGN75GZkRyWt1oQGUjNbLfcD7bQxPTMGhopC6qXVLqmJqY+sInF2jp6smESIRYMzxeu+YMWENOs/dDM+GyFCTxcBR/JiqRXiKlfhECAxMwvrnV29neyMmgdsag0hFnrVytN3NcvzBxzJCQC7pXZRV8mTUu12qkYfm2M8r+3gsh2KqDS6YCIgaKNfD5GCPPIqAWRdTT5RbTMe0rAM550LVqKqRPqyDVWDRFw+LxIjfNCRTuZdGRHNVQQ8W3PVOl4L8XpemZuJqEXhfcv3hYNEbOluL2GyZayCD+qEQkR7QOg6nhFKbSl+3AzIVoZBbHGci4aIvLIvrNM3NQiIKJ9sirUTaPLu3kzyK0QD1UD53g3gdwCscdt0Tzd239V8SmDUojMwpQTH8okkgu3qGqsFCLp/p7DmFxo8+sIzK95s0ElEI/FDy6Bdpt1CUQKOLce9C7VlBr3uY+yeSEeuxaml+TSRi9EJpOWyYQamsgzXIeHPBB7POCjhJq9Z+2B2ENJiBLaXHb2tqsH4qmYcoJJuJN1eMgDsdc6bKV2EjOuZsZzIbasp1FCWpOdtYLJhXhs6+Q1eK5QJxfiqU0qA2KummVclxV0D038P8kBMUPT1i4JhcimDlugp9ZCIZ7aki8pS9bSL9cnIrTH83pKy6CmJyvx7IHIVgAg59VayoG0kk0FGgCz6h09EBkQIIkZe/nSoGjIFIyy88cYswDSAS/E1GlgkqBlJdPbt454wQIOC+OLK/lkw0sPKoU47ygTD2CTD2H7YGkLgf/3VsV6wFBBu1Q5m2oYk4/f/d3zjL+ujYJY3IFjuHFADHiLA+KAGEAgQMTQxACIfwBygLFS1arSnwAAAABJRU5ErkJggg==';
    $arr = preg_split("/(,|;)/",$base);//分隔三部分,data:image/png  base64  后面一堆
    $base64Data = $arr[2];
    $arr2 = explode('/',$arr[0]);      //分割出图片格式
    $type = $arr2[1];
    $fileName = 'tupian.'.$type;      //拼接图片名称
    file_get_contents($fileName,base64_decode($base64Data));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值