Base64编码原理

Base64加密原理:浏览器

Base64使用6位二进制表示一个字符,可表示含64个字符的字符集;服务器

加密步骤:编码

将源字节码数据,3个字节共24bit数据为一组,划分为4组每组6个bit位,对每一个分组高位补0成一个字节;加密

若是数据总字节数不是3的倍数,会用0补;编码后的字符后又一个或两个=;spa

如何解决URL参数中不能出现+和/特殊字符的问题?code

为何须要Base64编码?图片

不一样的设备对字符的处理方式存在差别;文本文件中想要包含其余文件,好比图片;开发

Base64的应用场景?字符串

URLEncode、文本传输通道用来传输图片等其余文件it

Base64能够用来加密吗?

编码表

Value Char   Value Char   Value Char
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 /

在不一样的设备上,对数据的解析方式不大相同,因此容易出现乱码的状况,而一个统一的编码方式,能够避免乱码的出现,那就是base64。总结起来,base64是用来避免乱码的

GET请求的数据会附在URL以后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连,如:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0%E5%A5%BD。若是数据是英文字母/数字,原样发送,若是是空格,转换为+,若是是中文/其余字符,则直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。

手动在地址栏输入连接:并在连接中附加上中文参数,点击回车后,地址栏中的中文参数变成了一串无规律的字符,地址栏中的参数使用了Base64编码 。

 

问题:浏览器发送请求时会自动对URL进行base64编码,那服务器是什么时候对URL进行解码的呢,服务器对URL的解码是依赖服务器的具体实现的,不在j2ee的范围内,也不须要开发人员去配置或处理。若是在服务端使用URL类去请求另一个服务器,则须要手动编码。