美文网首页
base64模块

base64模块

作者: 夕阳_好 | 来源:发表于2020-05-13 10:25 被阅读0次

base64是一种比较常见的二进制编码方法

import base64
# 编码:
s1 = b'hello world'  #b表示字节串
print(base64.b64encode(s1))
# 或者 s1 = 'hello world'
# print(base64.b64encode(s1.encode('utf-8')))
# 输出:b'aGVsbG8gd29ybGQ='

# 解码:
s2 = b'aGVsbG8gd29ybGQ='
print(base64.b64decode(s2))
# 输出:b'hello world'

编码原理:
一个包含64个字符的数组
['A','B',.....,'a','b','c',......,'0','1',,.....'+','/']
26 + 26 + 10 + 2 = 64个字符
对二进制数据进行处理,每三个字节一组,一组就是3*8 = 24bit,base会把24个字节分为6组,4个字节,得到4个数字作为索引,然后查表,获得相应的4个字符,就是编码后的字符串。
就是3个字节对应编码后的4个字节。

作用:
使用于小段内容的编码,比如数字证书签名,cookie,网页中传输的少量二进制数据

注意:base64是一种通过查表的编码方法,不能用于加密

如果要编码的二进制不是3的倍数,怎么办?
答:base用(=)在末尾补足,在编码的末尾加上1个或者2个等号表示差了多少个字节,就是不够3的倍数,差几个,就补几个,解码时会自动去掉。

# 正好是3的倍数
s1 = b"hello wor"
print(base64.b64encode(s1))
#输出:b'aGVsbG8gd29y'
# 如果字节不够3的倍数,少一个字节就为3的倍数,补足一个= 
s2 = b"hello world"   # 3个字节一组
print(base64.b64encode(s2))
# 输出:b'aGVsbG8gd29ybGQ='  #4个字节一组,不够的用=号补全

# 直观一点
s3 = b"hello wor\x00\x00\x00"   # \x00代表二进制0的意思
print(base64.b64encode(s3))
输出:b'aGVsbG8gd29yAAAA'
# \x00是0对应的查表就是A,3个字节0,对应4个字节A,少一个\x00对应的编码会补足一个=
欢迎留言指导,共勉

相关文章

  • base64(二进制编解码)-常见内置模块

    由于看到hashlib模块中加密方法的应用。顺便也看了下常见的base64模块。 首先base64是将二进制...

  • Python常用模块之base64模块

    base64模块主要用于base64编码与base64解码。Base64是一种任意二进制到字符串的编码方法,常用于...

  • python的json,hashlib,base64模块

    这个章节我们主要来看json,haslib,base64模块,是python比较常用的模块,也是python在做项...

  • base64模块

    (一)base64模块的作用: Base64是一种基于64个可打印字符来表示二进制数据的表示方法,从本质上看...

  • base64模块

    模块简介 base64是将任意二进制编码成文本字符串的一种编码算法。具体请参考RFC 3548. 编码原理 bas...

  • base64模块

    base64是一种比较常见的二进制编码方法 编码原理:一个包含64个字符的数组['A','B',.....,'a'...

  • AttributeError错误

    问题:引入base64模块,结果出现如下问题: AttributeError: 'module' object h...

  • Python3内置模块之base64编解码方法小结

    Python3内置模块之base64编解码方法小结 概述 Base64 是网络上最常见的用于传输 8Bit 字节码...

  • Python加密—HMACSHA1 加密

    1、HMACSHA1 加密通过hmac模块实现,需要一个key 2、HMACSHA1加密,返回Base64编码

  • python学习-base64模块

    Base64是一种用64个字符来表示任意二进制数据的方法。 用记事本打开exe、jpg、pdf这些文件时,我们都会...

网友评论

      本文标题:base64模块

      本文链接:https://www.haomeiwen.com/subject/sjetghtx.html