base64编码和解码算法

目录

一、概述

二、原理

三、算法源码

四、TK版源码


一、概述

      Base64编码是一种基于64个可打印字符来表示二进制数据的方法。
  为什么会有Base64编码呢?因为有些网络传送渠道并不支持所有的字节,例如:传统的邮件只支持可见字符的传送,像ASCII码的控制字符就不能通过邮件传送。这样用途就受到了很大的限制。图片的二进制流的每个字节不可能全部是可见字符,这就导致图片的二进制流无法传送。最好的解决方式就是在不改变传统协议的情况下,做一种扩展方案来支持二进制文件的传送。即把不可打印的字符也能用可打印字符来表示,问题就解决了。Base64编码就是为了实现这一方案而设计的编码格式。
  Base64就是一种基于64个可打印字符来表示二进制数据的表示方法。   

二、原理

1.通过将待转换的字符串每三个字节分为一组,每个字节占8个二进制位,那么共有24个二进制位。

2.每24个二进制位分为每6个一组,则每3个字节可分为4组

3.在每组前面添加两个0,每组由6个二进制位变为8个二进制位,总共32个二进制位,即四个字节。

4.根据Base64编码索引表获得对应的值。

索引表

原理图1:

 

原理图2:

 

三、算法源码


IndexTable='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'

#base64加密算法
import base64

#base64算法编码:byte-->str
def encryption(byteData):
    # 打印字节数据
    print('byte数据: ', byteData)
    # print(len(byteData))

    #将字节数据转为二进制数
    binData = ''
    for i in byteData:
        #每个字节二进制记得左侧补零
        binData = binData + bin(i)[2:].zfill(8)
    print('转后二进制数: ', binData)

    #每3个字节24位,右侧补零
    fillZero = (24 - len(binData) % 24) % 24
    print('补零数: ', fillZero)
    binData =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值