zoukankan      html  css  js  c++  java
  • Base64原理简介

    Base64是一种编码方式,通常用于将二进制数据转换成可见字符的形式,该过程可逆。
    过程大致如下:
    1. 对64个可见字符,进行一个索引编码。索引是二进制的值,对应找到一个可见字符。
    Base64 编码表
    ValueChar
     
    ValueChar
     
    ValueChar
     
    ValueChar
    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 /
    2.上面的表说明只要6位,就可以表示0-63的范围。
    Base64先将每个字节转成二进制形式,每6位取值,将得到的值作为索引,到1.的表中索引到对应的可见字符。
    而一个字节是8位,于是,就有2位多余了。多余了怎么办呢,与下一个字节拼接。
    很明显,每3个字节,就可以编码成4个0-63的数字,对应4个字符。
     
    用代码说话。
    1 public static void main(String[] args) {
    2         byte[] bytes = new byte[] { 1, 2, 3 };
    3         System.out.println(new String(Base64.encodeBase64(bytes)));
    4     }

    我们来分析一下。

    这个byte数组的二进制数据如下:

    00000001  00000010  00000011

    000000  010000  001000  000011

    0      16      8     3

    A      Q      I      D

    因此,结果就是AQID。

    注意两点:

    1)并不能保证每个数组个数都是3的倍数,因此,对于未能补成二进制位的,在后面补0,如下图A
    2)原则上,Base64是最小4个字符一组,对于不足的字符,用=填充,如下图A, BC
     
  • 相关阅读:
    Apache POI 示例
    使用wsimport生成webservice客户端代码
    监听器
    @WebFilter注解
    事务
    k8s的deployment应用
    k8s 组件架构
    使用kubeadm安装kubernetes1.12.1
    轻量级批量管理工具pssh
    使用Bind服务配置DNS服务器
  • 原文地址:https://www.cnblogs.com/kingsleylam/p/4986404.html
Copyright © 2011-2022 走看看