关于base64编码

今天和同事聊到在给前端传输 验证码的时候,涉及到了这个关于base64编码的问题。
可以通过编码的格式来获取图片

  • Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。可查看RFC2045~RFC2049,上面有MIME的详细规范。
  • Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。例如,在Java Persistence系统Hibernate中,就采用了Base64来将一个较长的唯一标识符(一般为128-bit的UUID)编码为一个字符串,用作HTTP表单和HTTP GET URL中的参数。在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base64编码具有不可读性,需要解码后才能阅读。
  • Base64由于以上优点被广泛应用于计算机的各个领域,然而由于输出内容中包括两个以上“符号类”字符(+, /, =),不同的应用场景又分别研制了Base64的各种“变种”。为统一和规范化Base64的输出,Base62x被视为无符号化的改进版本
    主要还有就是有不可读性增加了代码的安全性。

至于好处可以参考以下代码

        String a = "123412312sfwefwefwefw";
       
        String b = new String(CodecManager.getCodecClient(CodecConstants.BASE64).encode(a.getBytes()));
        System.out.println(b);
        
        //对base64编码后的字符串,进行其他编码
        String c1 = new String(b.getBytes(),"gbk");
        System.out.println(c1);
        
        String c2 = new String(b.getBytes(),"utf-8");
        System.out.println(c2);
        
        String c3 = new String(b.getBytes(),"ISO8859-1");
        System.out.println(c3); 

输出:

MTIzNDEyMzEyc2Z3ZWZ3ZWZ3ZWZ3
MTIzNDEyMzEyc2Z3ZWZ3ZWZ3ZWZ3
MTIzNDEyMzEyc2Z3ZWZ3ZWZ3ZWZ3
MTIzNDEyMzEyc2Z3ZWZ3ZWZ3ZWZ3


主要的好处就是:
1.首先这算法是编码, 不是压缩, 编码后只会增加字节数;
2.算法简单, 几乎不会影响效率;
3.算法可逆, 解码很方便, 不用于私密信息通信;
4.虽然解码方便, 但毕竟编码了, 肉眼还是不能直接看出原始内容;
5.加密后的字符串只有[0-9a-zA-Z+/=], 不可打印字符(包括转移字符)也可传输;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值