Base64编解码及在Android中的使用

我的梦境 提交于 2020-08-18 20:46:15

1. Base64简介

Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,一种基于64个可打印字符来表示二进制数据的方法。
Base64一般用于在HTTP协议下传输二进制数据,而HTTP是文本协议,所以需要将二进制数据转换为字符数据,但网络传输只能传输可打印字符(ASCALL码中规定,0-31、128这33个字符属于控制字符,32-127这95个字符属于可打印字符)。因此Base64使用64个可打印字符来表示二进制数据,其索引与字符关系对应为:
在这里插入图片描述

2. 在Android中使用Base64

Android SDK中已集成Base64工具类(android.util.Base64),使用示例代码如下:

  • Base64加密字符串
    /**
     * Base64加密字符串 
     * @param content -- 代加密字符串
     * @param charsetName -- 字符串编码方式
     * @return
     */
    private String base64Encode(String content, String charsetName) {
        if (TextUtils.isEmpty(charsetName)) {
            charsetName = "UTF-8";
        }
        try {
            byte[] contentByte = content.getBytes(charsetName);
            return Base64.encodeToString(contentByte, Base64.DEFAULT);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return "";
    }
  • Base64解密字符串
    /**
     * Base64解密字符串
     * @param content -- 待解密字符串
     * @param charsetName -- 字符串编码方式
     * @return
     */
    private String base64Decode(String content, String charsetName) {
        if (TextUtils.isEmpty(charsetName)) {
            charsetName = "UTF-8";
        }
        byte[] contentByte = Base64.decode(content, Base64.DEFAULT);
        try {
            return new String(contentByte, charsetName);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return "";
    }

值得注意的是,可通过设置Base64中encode/decode方法的flag参数设置编解码方式,具体定义如下

  • DEFAULT:使用默认方法进行编/解码
  • NO_PADDING:编码方式,略去输出结果最后的"="
  • NO_WRAP:编码方式,略去输出结果中所有的换行符,设置后CRLF无效
  • CRLF:编码方式,使用Windows风格的CRLF作为一行的结尾而不是Unix风格的LF
  • URL_SAFE:编解码方式,使用"-“和”_“取代”+“和”/"
    当和后台小伙伴对接Base64编解码时,最好先沟通好编解码方式,另外还可以通过一些在线网站确认Base64编解码正确与否,比如在线Base64加密解密

参考资料:
什么是Base64

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!