2018-03-19

BASE64

用于传输8Bit的编码方式之一,一种基于64个可打印字符来表示二进制数据的方法。主要用来在HTTP环境下传递较长的标识信息。,采用Base64编码不仅比较简短,同时也具有不可读性,即所编码的数据不会被人用肉眼所直接看到。

原理

转ASCII ->分组(6位一组)->高位补0

java版本

import java.util.Base64;
对于标准的Base64:
加密为字符串使用Base64.getEncoder().encodeToString();
加密为字节数组使用Base64.getEncoder().encode();
解密使用Base64.getDecoder().decode();
对于URL安全或MIME的Base64,只需将上述getEncoder()getDecoder()更换为getUrlEncoder()getUrlDecoder()
或getMimeEncoder()和getMimeDecoder()即可。

应用

1.Base64 也会经常用作一个简单的“加密”来保护某些数据,而真正的加密通常都比较繁琐。

2.垃圾讯息传播者用Base64来避过反垃圾邮件工具,因为那些工具通常都不会翻译Base64的讯息。

注意

标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式,而这些“%”号在存入数据库时还需要再进行转换,因为ANSI SQL中已将“%”号用作通配符。

与Base32的区别

  1. 主要就是空间效率的区别,Base64是具有比较高的空间效率的。
  2. Base32,32个字符来表示,编码后变成原来的8/5,但是最后如果不足8个字符,将用=来补充。而Base64编码大小变成原来的4/3。

你可能感兴趣的:(2018-03-19)