bs64模块

import base64

'''
概述:用记事本打开图片等文件,看到一坨乱码,因为二进制文件包含很多无法显示的内容。所以想让记事本能处理二进制数据,就需要将二进制字符串转换。base64是一种比较常见的二进制编码方法

编码原理:
    一个包含64个字符的数组
    ['A', 'B', ……, 'a', 'b', ……, '0', '1', ……, '+', '/']
    
    对二进制数据进行处理,每个三个字节一组,一组就是3x8=24bit,划为4组,每组正好6bit

    得到4个数字作为索引,然后查表,获得相应的4个字符,就是编码后的字符串
    
    
作用:
    适用于小段内容的编码,比如数字证书签名,cookie,网页中传输的少量二进制数据
    
注意:base64是一种通过查表的编码方法,不能用于加密,即使修改了字符对照表页不行。
'''

#编码
s1 = b"sunck is a good ma"
print(base64.b64encode(s1))
#解码
s2 = b"c3VuY2sgaXMgYSBnb29kIG1h"
print(base64.b64decode(s2))


#如果要编码的二进制不是3的倍数,怎么办?
#答:base用\x00字节在末尾补足,在编码的末尾加上1个或2个等号表示补了多少个字节,解码时会自动去掉
s3 = b"sunck is a good man"
print(base64.b64encode(s3))


# 由于标准base64编码后可能出现字符+和/,在URL中就不能直接作为参数
# 提供urlsafe_b64encode编码,保证url的安全,将+和/替换成-和_,提供urlsafe_b64decode进行url安全解码
s4 = b"sunck is a good m~"
print(base64.b64encode(s4))
print(base64.urlsafe_b64encode(s4))

s5 = b"c3VuY2sgaXMgYSBnb29kIG1-"
print(base64.urlsafe_b64decode(s5))

#由于=字符也可能出现在base64编码中,但是=在url、cookie里面会造成歧义,所以很多base64编码后会把=去掉
s6 = b"abcd"
s8 = base64.b64encode(s6)
print(s8)
#  b"abcd"  -->  b'YWJjZA=='
#  b"abcd"  -->  b'YWJjZA'
s7 = b'YWJjZA=='
print(base64.b64decode(s7))

#可以自定义编码对照表列表中64个字符的排序,这样可以自定义编码,但是通常情况下没有任何必要


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值