Base64编解码及在Android中的使用

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

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值