什么是Base64

Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。

Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。采用Base64编码具有不可读性,需要解码后才能阅读。

Base64由于以上优点被广泛应用于计算机的各个领域,然而由于输出内容中包括两个以上“符号类”字符(+, /, =),不同的应用场景又分别研制了Base64的各种“变种”。为统一和规范化Base64的输出,Base62x被视为无符号化的改进版本。

很多人把他叫做Base64加密,其实Base64不是一种加密方式,并不能起到加密的效果,它只是一种编码方式。Base64是基于以下64个可见字符实现的,所以叫Base64。

Base64编码的作用

Base64编码在实际开发中有相当广泛的用途

在计算机中任何数据都是按ascii码存储的,而ascii码的128~255之间的值是不可见字符。而在网络上交换数据时,比如说从A地传到B地,往往要经过多个路由设备,由于不同的设备对字符的处理方式有一些不同,这样那些不可见字符就有可能被处理错误,这是不利于传输的。所以就先把数据先做一个Base64编码,统统变成可见字符,这样出错的可能性就大降低了。

对证书来说,特别是根证书,一般都是作Base64编码的,因为它要在网上被许多人下载。电子邮件的附件一般也作Base64编码的,因为一个附件数据往往是有不可见字符的。

Base64编码在Android中的使用

Adroid中通过Base64类直接实现Base64的编码和解码

String strEncode = Base64.encodeToString("Hello WuXiaAChao!".getBytes(), Base64.DEFAULT);
String strDecode = new String(Base64.decode(strEncode, Base64.DEFAULT));
Base64--编码后数据: SGVsbG8gV3VYaWFBQ2hhbyE=
Base64--解码后数据: Hello WuXiaAChao!

Adroid中Base64.DEFAULT参数说明

  • DEFAULT 这个参数是默认,使用默认的方法来加密
  • NO_PADDING 这个参数是略去加密字符串最后的”=”
  • NO_WRAP 这个参数意思是略去所有的换行符(设置后CRLF就没用了)
  • CRLF 这个参数是Win风格的回车换行符,意思就是使用CR(回车)LF(换行)这一对作为一行的结尾,而不是Linux/Unix风格的LF(换行)
  • URL_SAFE 这个参数意思是加密时不使用对URL和文件名有特殊意义的字符来作为加密字符,具体就是以-和_取代+和/

Base64编码的实现

Base64是3个字节一组,最后变成4个可见字符。具体实现是:

  1. 先将3个字符转换ASCII码的二进制共24 bit
  2. 再将24 bit按6 bit一组分成4组
  3. 每组的高位补两个0,变成4个字节
  4. 最后对照Base64字符表转成对应的4个字符

    如果目标字符不是3的倍数,多出一个字节的分成6 bit和2 bit两组,2 bit低位补4个0变成6 bit,两组再高位补两个0,最后转成2个Base64字符。因为Base64字符是4个,最后补两个等号,如"a"的Base64编码是"YQ=="。多出两个字符的也是类似处理,不足一组的低位补足6位,再高位补两个0转成Base64编码,最后不足4个的补等号,如"ab"的Base64编码是"YWI="。

Android数据编码之Base64相关推荐

  1. android bitmap string,Android Bitmap到Base64字符串(Android Bitmap to Base64 String)

    Android Bitmap到Base64字符串(Android Bitmap to Base64 String) 如何将一个大的Bitmap(用手机相机拍摄的照片)转换为Base64 String? ...

  2. Android图片转base64问题记录

    1.编码标准有以下几种: CRLF Win风格的换行符,意思就是使用CR和LF这一对作为一行的结尾而不是Unix风格的LF. CRLF是Carriage-Return Line-Feed的缩写,意思是 ...

  3. Android kotlin 将Base64字符串转换成Bitmap,并在jetpack compose的Image控件中显示

    Android kotlin 将Base64字符串转换成Bitmap 前言 代码 将Base64字符串转换成Bitmap 在jetpack compose的Image控件中显示Bitmap 完事 前言 ...

  4. Android 拍照转 Base64

    Android 点击按钮,打开相机拍照, 显示照片,并把照片转Base64格式打印 依赖: dependencies {// 相机拍照依赖implementation 'com.mindorks:pa ...

  5. android中base64加密,Android应用开发之android自带Base64加密解密

    本文将带你了解Android应用开发之android自带Base64加密解密,希望本文对大家学Android有所帮助. android项目引用不到以下两个java类 import sun.misc.B ...

  6. android 字符串转bitmap,android – 如何将Base64字符串转换为BitMap图像显示在ImageView?...

    我有一个Base64字符串,表示一个BitMap图像. 我需要将该字符串转换为BitMap图像,以使用它在ImageView在我的Android应用程序 怎么做? 这是我用来将图像转换为base64字 ...

  7. Android开发之Base64与bitmap互转的工具类

    老套路先看效果图: 如上图:分别是bitmap转base64和base64转bitmap 直接上代码.看工具类 package com.example.apidemo.util; /** Copyri ...

  8. Android图片的Base64编码与解码

    Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法. Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较 ...

  9. android 图片转base64内存变大了_开发者最喜爱的图片编码格式:opencv编码,解码,显示base64图片...

    由于图片格式尺寸较大,在互联网上若想传递一张图片,往往会 把图片进行格式转换,然后进行数据传输,图片格式往往会转换为base64编码图片 base64编码图片 BASE64编码表 base64编码 是 ...

  10. Android 图片和Base64转化,并保存相册

    现在在Android开发中很少用到Base64的BASE64Encoder及BASE64Decoder,今天在h5中需要将图片的base64数据转化为图片保存到相册,项目中居然找不到BASE64Enc ...

最新文章

  1. easyui中的tree数据使用说明
  2. mysql query日期_如何获取mysql中两个日期之间的日期列表select query
  3. 万向节死锁 gimbal lock
  4. 讨论计算机在学术领域的应用,BGPLUS实地科研 | 卡内基梅隆大学 | 计算机、人工智能:在科学实验领域的应用...
  5. 基础算法 —— 高精度计算 —— 高精度加法
  6. 【英语学习】【Level 07】U07 Stories of my Life L1 Going to the Countryside
  7. c语言用指针删除链表free,leetcode剑指 Offer 18(删除链表的节点)--C语言实现
  8. vue.js MVVM模式介绍及案例
  9. Entity Framework Core DbContext内置方法
  10. 天涯红旗linux,红旗linux安装中的几点技巧(转载)
  11. 短视频运营方法分享,三个方面要注意,合理运营才能吸粉引流
  12. 水晶报表10.0企业版下载地址及注册码
  13. 最全常用Linux命令升级及面试必备
  14. 2022年CPU天梯图(7月更新)
  15. Java并发57:Akka Actors并发框架浅谈及入门示例
  16. 分享一个商品历史价格查询的网站
  17. 应用/游戏在三星Galaxy S8及S8+上的适配办法
  18. Python爬取wallhaven壁纸 2023.1.31
  19. docker容器内的attached 和detached模式
  20. python将一个列表赋值给另一个列表_将一个列表分配给另一个

热门文章

  1. 揭秘有状态服务上 Kubernetes 的核心技术
  2. Dragonfly 应用-如何计算面孔隙率
  3. oracle数据库查询,sql没问题,数据库也有数据,方法没错,项目运行就是查不出数据
  4. 软件版本 —— Alpha、Beta、RC版本的区别
  5. 使用Audacity分析浊音、清音和爆破音的时域以及频域特征
  6. 用Excel快速新建空白文件夹
  7. Python-字符串的判断、拆分和拼接
  8. 软考中高级项目管理案例分析-人力资源管理
  9. 基于MATLAB的指纹识别系统设计
  10. 协会元宇宙产业园基地孵化器授牌案例:循环经济元宇宙加速基地