Base64编码

Base64编码

起男 1,026 2021-04-06

Base64编码

什么是Base64:

  • 一种把二进制数据用文本表示的编码算法
  • String base64Encode(byte[] data)
    • byte[] {0xe4,0xb8,0xad} -> "5Lit"
    • 将uft-8的16进制数字转换成8位2进制数字,然后将3个8位2进制转换为4个6位2进制,然后就得到了5Lit

目的:

  • 一种用文本(A-Z、a-z、0-9、+/=)表示二进制内容的方式
  • 适用于文本协议
  • 效率下降(长度增加1/3)

应用:

  • 电子邮件协议

注意:

如果长度不是3的整数倍:

  • 末尾补0x00或0x00 0x00
  • 编码后加=表示补充了一个字节
  • 编码后加==表示补充了两个字节

实例

String str = "hello\u00ff编码测试";
//编码  
String encode = Base64.getEncoder().encodeToString(str.getBytes());
System.out.println(encode);
//解码
String decoder = new String(Base64.getDecoder().decode(encode));
System.out.println(decoder);

输出:

aGVsbG/Dv+e8lueggea1i+ivlQ==  //可以通过.withoutPadding()去除最后的=号
helloÿ编码测试

可以通过Base64的getUrlDecoder()和getUrlEncoder() 来实现url的base64编码和解码

总结

  • Base64是编码算法,不是加密算法
  • Base64编码的目的是把任意二进制数字编码为文本(长度增加1/3)
  • 其它编码:Base32、Base48、Base58