Base64初探-阿里云开发者社区

开发者社区> SevenSun> 正文

Base64初探

简介: base64是一种编码格式。
+关注继续查看

1. 什么是base64

base64是一种使用64个可读字符的一种编码方式
  64个字符如下:
   (a~z)26个小写字母
   (A~Z)26
   +:加号
   /:斜杠

image.png

2. base64原理

首先说说相关编码位数:Hex(十六进制)以4位为一组,而base64以6位为一组 这里的位指的是二进制位

base64将三个字符(3*8位)转化为4个字符(4*6位),文本不足3个字符,对转化6位字符后,后面的剩余的二进制位可能是2位或者4位(因为8X/6余数为2或者4),然后进行补0(补到一共6位,因为base64是以6位为单位)。最后还需加=号,缺少2个二进制位就补一个=号,缺少4个就补充两个==。没有理解的多看看下面的例子。

具体对于转换后余几位情况转换如下(这里主要针对英文,中文转换具体得看中文编码):

1.不需要补位

原文: p h p

对应ASCII: 01110000 01101000 01110000

每6位分割: 011100 000110 100001 110000 |

对应10进制值: 28 6 33 48

Base64对应的字符:c G h w

最后php=cGhw(base64)

2.需要补充四个二进制位

原文: r a n l

ASCII值:01110010 01100001 01101110 01101100

每6位分割:011100 100110 000101 101110 | 011011 00 0000 xxxxxx xxxxxx |

对应10进制值:28 38 5 46 27 0 = = 对应base64字符: c m F u b A = =

结果: ranl=cmFubA==(base64)

3.需要补充两个二进制位

原文 h a c k e

ASCII值: 01101000 01100001 01100011 01101011 01100101

每6位分割: 011010 000110 000101 100011 | 011010 110110 0101 00 xxxxxx |

对应10进制值: 26 6 5 35 26 54 20 =

对应base64字符: a G F j a 2 U =

结果 hacke=aGFja2U=(base64)

3. base64常见用途

1.传输不可见字符(128~255)不方便,容易出错。这里的不可见字符是正对ascii码(0~127)

2.web传输小图片(图片上传与图片显示):利用浏览器直接解析base64或使用js解析,避免多次请求。格式如下

2.1web后台生成/解析字符串

(1):图片生成base64字符串 byte[] data = null;

// 读取图片字节数组
    try {
        InputStream in = new FileInputStream(imgFilePath);
        data = new byte[in.available()];
        in.read(data);
        in.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
    
    // 对字节数组Base64编码
    BASE64Encoder encoder = new BASE64Encoder();
    return encoder.encode(data);// 返回Base64编码过的字节数组字符串

(2):解析

// 对字节数组Base64解码
    if (imgStr == null) // 图像数据为空
        return false;
    BASE64Decoder decoder = new BASE64Decoder();
    try {
        // Base64解码
        byte[] bytes = decoder.decodeBuffer(imgStr);
        for (int i = 0; i < bytes.length; ++i) {
            if (bytes[i] < 0) {// 调整异常数据
                bytes[i] += 256;
            }
        }
        // 生成jpeg图片
        OutputStream out = new FileOutputStream(imgFilePath);
        out.write(bytes);
        out.flush();
        out.close();
        return true;
    } catch (Exception e) {
        return false;
    }
}

附属图片:

image.png

参考文章:

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
使用NAT网关轻松为单台云服务器设置多个公网IP
在应用中,有时会遇到用户询问如何使单台云服务器具备多个公网IP的问题。 具体如何操作呢,有了NAT网关这个也不是难题。
25920 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,大概有三种登录方式:
2503 0
阿里云服务器ECS远程登录用户名密码查询方法
阿里云服务器ECS远程连接登录输入用户名和密码,阿里云没有默认密码,如果购买时没设置需要先重置实例密码,Windows用户名是administrator,Linux账号是root,阿小云来详细说下阿里云服务器远程登录连接用户名和密码查询方法
9501 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
11017 0
windows server 2008阿里云ECS服务器安全设置
最近我们Sinesafe安全公司在为客户使用阿里云ecs服务器做安全的过程中,发现服务器基础安全性都没有做。为了为站长们提供更加有效的安全基础解决方案,我们Sinesafe将对阿里云服务器win2008 系统进行基础安全部署实战过程! 比较重要的几部分 1.
8120 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
10521 0
如何设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云安全组设置详细图文教程(收藏起来) 阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程。阿里云会要求客户设置安全组,如果不设置,阿里云会指定默认的安全组。那么,这个安全组是什么呢?顾名思义,就是为了服务器安全设置的。安全组其实就是一个虚拟的防火墙,可以让用户从端口、IP的维度来筛选对应服务器的访问者,从而形成一个云上的安全域。
6013 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,云吞铺子总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系统盘、创建快照、配置安全组等操作如何登录ECS云服务器控制台? 1、先登录到阿里云ECS服务器控制台 2、点击顶部的“控制台” 3、通过左侧栏,切换到“云服务器ECS”即可,如下图所示 通过ECS控制台的远程连接来登录到云服务器 阿里云ECS云服务器自带远程连接功能,使用该功能可以登录到云服务器,简单且方便,如下图:点击“远程连接”,第一次连接会自动生成6位数字密码,输入密码即可登录到云服务器上。
20957 0
+关注
SevenSun
技术创造美好生活!
23
文章
2
问答
文章排行榜
最热
最新
相关电子书
更多
《Nacos架构&原理》
立即下载
《看见新力量:二》电子书
立即下载
云上自动化运维(CloudOps)白皮书
立即下载