Base64编码原理、实现

本文介绍了Base64编码原理,包括其在数据传输中的应用,编码过程,以及在Golang中的实现细节。文章详细解析了如何将二进制数据转化为Base64编码,探讨了编码表的使用,以及在编码和解码过程中位运算的作用。同时,提供了Base64编码和解码的Golang实现示例。
摘要由CSDN通过智能技术生成

该文章已被收录到本人独立博客:Base64编码原理、实现

0x01 Base64 编码

Base64 编码在数据传输过程中应用广泛,例如传统的邮件只支持可见字符的传送,像 ASCII 码的控制字符就不能通过邮件传送。这样就受到了很大的限制,比如图片二进制流的每个字节不可能全部是可见字符,所以就传送不了。正好 Base64 编码使用 64 个可见字符来表示二进制数据。

0x02 Base64 原理Base64 编码原理

如上图所示是将 “Base” 进行Base64编码得到 “QmFzZQ==” 的过程。

  • 根据ASCII编码表获取 “Base” 对应的二进制,一个字符占一个字节,也就是一个字符8位
  • 将 “Base” 的二进制编码按每6位划分,正好3个8位字节可以得到4个6位字节。
  • 在6位字节前补两个0形成8位一个字节。如果剩下字符不足6位,后面用0填充。
  • 根据形成的前两位为0的8位字节进行查表(Base64编码表),得到Base64编码。为满足Base64编码字节数为4的倍数,最后需要填充足够的 “=” 符号
Base64 编码表在这里插入图片描述

0x03 Base64 实现(Golang)

在看下面内容之前,请务必了解 位运算 中的 左移、右移、与运算

  • 定义编码表
// 编码表
var EncodeDict = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
// 解码表
var DecodeDict = map[byte]int{
   '0': 52, '1': 53, '2': 54, '3': 55, '4': 56, '5': 57, '6': 58,
	'7': 59, '8': 60, '9': 61, 'A': 0, 'B': 1, 'C': 2, 'D': 3, 'E': 4, 'F': 5, 'G': 6, 'H': 7,
	'I': 8, 'J': 9, 'K': 10, 'L': 11
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值