首页 / PYTHON / Python base64
Python base64
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python base64,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2182字,纯文字阅读大概需要4分钟。
内容图文
![Python base64](/upload/InfoBanner/zyjiaocheng/706/038a4f6498c64de7a68ba70cb222549f.jpg)
base64表示一种使用64个字符表示任意二进制数据的方法,注意64个字符是可以自己定义的
参考链接:https://www.liaoxuefeng.com/wiki/1016959663602400/1017684507717184
用记事本打开exe
、jpg
、pdf
这些文件时,我们都会看到一大堆乱码,因为二进制文件包含很多无法显示和打印的字符,所以,如果要让记事本这样的文本处理软件能处理二进制数据,就需要一个二进制到字符串的转换方法。Base64是一种最常见的二进制编码方法。
原理
首先准备一个包含64个字符的数组,这就相当于Ascii编码中的Ascii表,根据下面的算法得出的数过来查表,得到的一个一个的字符就是最后将二进制进行base64编码得到的字符串
['A', 'B', 'C', ... 'a', 'b', 'c', ... '0', '1', ... '+', '/']
然后,对二进制数据进行处理,每3个字节一组,一个字节是8bit,一共是3x8=24
bit,又将这3组划为4组,每组正好6个bit:
然后将这6bit转为10进制的数,(6bit的二进制数刚好能表示0-63,就是64个数 )作为索引,然后查表,获得相应的4个字符,就是编码后的字符串。
使用
以上就是base的编码原理,所以,根据自己定义的64个字符串的不同,同样的二进制文件可能也有不同的结果
另外,上面分组的过程中,我们将二进制文件分为3个字节的组,那么当二进制的长度不是3的倍数会怎么办呢,Base64用\x00
字节在末尾补足后,再在编码的末尾加上1个或2个=
号,表示补了多少字节,解码的时候,会自动去掉。
Python内置的base64
可以直接进行base64的编解码:
>>> import base64 >>> base64.b64encode(b'binary\x00string') b'YmluYXJ5AHN0cmluZw==' >>> base64.b64decode(b'YmluYXJ5AHN0cmluZw==') b'binary\x00string'
由于标准的Base64编码后可能出现字符+
和/
,在URL中就不能直接作为参数,所以又有一种"url safe"的base64编码,其实就是把字符+
和/
分别变成-
和_(略)
还可以自己定义64个字符的排列顺序,这样就可以自定义Base64编码,不过,通常情况下完全没有必要。
Base64是一种通过查表的编码方法,不能用于加密,即使使用自定义的编码表也不行。
Base64适用于小段内容的编码,比如数字证书签名、Cookie的内容等。
由于=
字符也可能出现在Base64编码中,但=
用在URL、Cookie里面会造成歧义,所以,很多Base64编码后会把=
去掉:
# 标准Base64: 'abcd' -> 'YWJjZA==' # 自动去掉=: 'abcd' -> 'YWJjZA'
去掉=
后怎么解码呢?因为Base64是把3个字节变为4个字节,所以,Base64编码的长度永远是4的倍数,因此,需要加上=
把Base64字符串的长度变为4的倍数,就可以正常解码了。(因为等号是怎么加的,加等号是为了 表示\x00
字节在末尾补足的个数)
Base64是一种任意二进制到文本字符串的编码方法,常用于在URL、Cookie、网页中传输少量二进制数据。
内容总结
以上是互联网集市为您收集整理的Python base64全部内容,希望文章能够帮你解决Python base64所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。