base64编码和解码是一个常用的方式,可以避免明文传输或者存储,也可以结合加解密技术进行使用。
- base64 编码的定义:base64编码表:
- base64 采用6位二进制进行编码,不足部分补足0,字符是8位二进制表示,所以最小公约数位24,3位字符经过base64编码后变成了4位。
- 看一个编码示例:
- 从示例可以看到:H是八位,其前六位010 010对应18,18对应base64编码表为S,H的后两位00加上补充的4个0组成6位,正好是000 000 对应十进制为0,对照base64编码表为A,后续补充的0用=号补足,=代表补充二进制位数*2,故最多补充2*2位,两个==代表补足了4个0.一个=号代表补足了两个0.
- base64编码步骤:字符串转换为二进制H(01001000)==》从前到后每六位二进制转换为十进制,去base64编码表查找对应的字符或符号010 010(S)000 000(A)==》根据最后一次补充了的0,对应添加0个或一个或两个=号 0000(==)==》完成编码(SA==)。
- base64解码:从前往后对照base64编码,依次转换为二进制SA(010010 000 000)==》遇见=则结束==》然后从前到后8位二进制转换为字符H(0100 1000),不足8位则丢弃。==》完成转换SA==(H)。
- java 实现的 base64编码解码:
-
public class Test { private final static char pem_array[] = { // 0 1 2 3 4 5 6 7 'A','B','C','D','E','F','G','H', // 0 'I','J','K','L','M','N','O','P', // 1 'Q','R','S','T','U','V','W','X', // 2 'Y','Z','a','b','c','d','e','f', // 3 'g','h','i','j','k','l','m','n', // 4 'o','p','q','r','s','t&#