base64编解码

应用场景

是网络上最常见的传输8bit字节码的编码方式之一;
网络上传输的字符并不全是可打印的字符,比如二进制文件、图片等。Base64的出现就是为了解决此问题,它是基于64个可打印的字符来表示二进制的数据的一种方法;
也就是说base64编码把二进制数据转换为字符,以方便传输;

编码原理

核心思想 采用64个基本的ASCII码字符对数据进行重新编码。Base64字符表,包括大写A-Z小写a-z数字0-9和+以及/。

编码步骤

  1. 将需要编码的数据拆分成字节数组,以3个字节为一组进行拆分;当数据的字节数不是3的整倍数的时候,用0补齐;
  2. 将每组数据的二进制拼接起来,并以6位为单位分成4组;
  3. 给每组数据的最高位补充两个0,将三字节变成4字节;
  4. 将每个字节对应的10进制的值根据base64编码表查出对应的字符形成编码后的结果。在第一步用0填充的字节在编码完成后=补齐。
- 首先取ABC对应的ASCII码值
A : 65、B : 66、C : 67
- 再取二进制值
A : 01000001、B : 01000010、C : 01000011
- 然后把这三个字节的二进制码接起来
010000010100001001000011
- 再以6位为单位分成4个数据块并在最高位填充两个0后形成4个字节的编码后的值
00010000、00010100、00001001、00000011
- 再把这4个字节数据转化成10进制数
16、20、19、3
- 最后根据Base64给出的64个基本字符表,查出对应的ASCII码字符
Q、U、J、D
这里的值实际就是数据在字符表中的索引。
解码过程就是把4个字节再还原成3个字节再根据不同的数据形式把字节数组重新整理成数据。

使用bash进行编解码的使用实例

#编码
[root@kafka eureka]# echo 'abc'| base64 
YWJjCg==
[root@kafka eureka]# echo 'ABC'| base64 
QUJDCg==
# 参数-d用于解码
[root@kafka eureka]# echo 'YWJjCg==' | base64 -d
abc

注意: 上面手动完成的过程,字母ABC的编码结果应该是QUJD,而用bash编码后的结果为QUJDCg==是因为存在不可见字符换行符,换行符编码后的结果为Cg==
在这里插入图片描述
ASCii码表:https://tool.ip138.com/ascii_code/
base64码表:https://base64.diqibu.com/article/3.html

码值	字符	码值	字符	码值	字符	码值	字符
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	i	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	/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值