zoukankan      html  css  js  c++  java
  • Base64编码

    一. Base64编码由来

      为什么会有Base64编码呢?因为有些网络传送渠道并不支持所有的字节,例如传统的邮件只支持可见字符的传送,像ASCII码的控制字符就 不能通过邮件传送。这样用途就受到了很大的限制,比如图片二进制流的每个字节不可能全部是可见字符,所以就传送不了。最好的方法就是在不改变传统协议的情 况下,做一种扩展方案来支持二进制文件的传送。把不可打印的字符也能用可打印字符来表示,问题就解决了。Base64编码应运而生,Base64就是一种 基于64个可打印字符来表示二进制数据的表示方法。

    二、Base64编码过程

      Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式。 如果剩下的字符不足3个字节,则用0填充,输出字符使用'=',因此编码后输出的文本末尾可能会出现1或2个'='。

      为了保证所输出的编码位可读字符,Base64制定了一个编码表,以便进行统一转换。编码表的大小为2^6=64,这也是Base64名称的由来。

    Base64编码表

    码值  字符   码值   字符   码值   字符  码值   字符
    0     A     16     Q     32     g     48     w
    1     B     17     R     33     h     49     x
    2     C     18     S     34     i     50     y
    3     D     19     T     35     j     51     z
    4     E     20     U     36     k     52     0
    5     F     21     V     37     l     53     1
    6     G     22     W     38     m     54     2
    7     H     23     X     39     n     55     3
    8     I     24     Y     40     o     56     4
    9     J     25     Z     41     p     57     5
    10     K     26     a     42     q     58     6
    11     L     27     b     43     r     59     7
    12     M     28     c     44     s     60     8
    13     N     29     d     45     t     61     9
    14     O     30     e     46     u     62     +
    15     P     31     f     47     v     63     /

    三、java中进行BASE64 编码和解码

    // 将 BASE64 编码的字符串 s 进行解码
    public static String getFromBASE64(String s) {
    if (s == null) return null;
    BASE64Decoder decoder = new BASE64Decoder();
    try {
    byte[] b = decoder.decodeBuffer(s);
    return new String(b);
    } catch (Exception e) {
    return null;
    }
    } 
  • 相关阅读:
    个人工作总结08
    个人工作总结07
    个人工作总结06
    个人工作总结07
    个人工作总结06
    个人工作总结05
    输入法评价
    Zookeeper分布式锁
    Zookeeper的Watcher方法
    Windows-java-Zookeeper
  • 原文地址:https://www.cnblogs.com/lyjs/p/4900905.html
Copyright © 2011-2022 走看看