Python base64编码

1.bytes.decode()

decode()方法语法:

bytes.decode(encoding="utf-8", errors="strict")
  • encoding – 要使用的编码,如"UTF-8"。
  • errors – 设置不同错误的处理方案。默认为 ‘strict’,意为编码错误引起一个UnicodeError。 其他可能得值有 ‘ignore’, ‘replace’, ‘xmlcharrefreplace’, ‘backslashreplace’ 以及通过 codecs.register_error() 注册的任何值。

实例

#!/usr/bin/python3str = "菜鸟教程";
str_utf8 = str.encode("UTF-8")
str_gbk = str.encode("GBK")print(str)print("UTF-8 编码:", str_utf8)
print("GBK 编码:", str_gbk)print("UTF-8 解码:", str_utf8.decode('UTF-8','strict'))
print("GBK 解码:", str_gbk.decode('GBK','strict'))

结果:

菜鸟教程
UTF-8 编码: b'\xe8\x8f\x9c\xe9\xb8\x9f\xe6\x95\x99\xe7\xa8\x8b'
GBK 编码: b'\xb2\xcb\xc4\xf1\xbd\xcc\xb3\xcc'
UTF-8 解码: 菜鸟教程
GBK 解码: 菜鸟教程

2.base64使用

a.简介

Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符(包括a-z、A-Z、0-9、/、+)来表示二进制数据的方法。Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。

按照RFC2045的定义,Base64被定义为:Base64内容传送编码被设计用来把任意序列的8位字节描述为一种不易被人直接识别的形式。(The Base64 Content-Transfer-Encoding is designed to represent arbitrary sequences of octets in a form that need not be humanly readable.)

Base64编码是一种“防君子不防小人”的编码方式。广泛应用于MIME协议,作为电子邮件的传输编码,生成的编码可逆,后一两位可能有“=”,生成的编码都是ascii字符。
优点:速度快,ascii字符,肉眼不可理解
缺点:编码比较长,非常容易被破解,仅适用于加密非关键信息的场合

b.编码原理

Base64要求把每三个8Bit的字节转换为四个6Bit的字节(38 = 46 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3。

Base64编码遵循以下规则:

①.把3个字符变成4个字符。

②每76个字符加一个换行符。

③.最后的结束符也要处理。

从严格意义上来说,BASE64编码算法并不算是真正的加密算法,它只是将源数据转码成为了一种不易阅读的形式,而转码的规则是公开的(解码很容易)。转码之后的数据具有不可读性,需要解码后才能阅读。

注:BASE64加密后产生的字节位数是8的倍数,如果不够位数以=符号填充。


c.实例

import base64if __name__ == '__main__':s = '这是一段文字'ss = s.encode('utf-8')  # 返回字节数组bytesoutput = base64.b64encode(ss)  # 参数支持bytesprint(output)  # b'6L+Z5piv5LiA5q615paH5a2X'print(str(output, 'utf-8'))  # 6L+Z5piv5LiA5q615paH5a2X  将bytes转换为字符串raw_string = base64.b64decode(output)  # 解码 返回字节数组.print(raw_string)  # b'\xe8\xbf\x99\xe6\x98\xaf\xe4\xb8\x80\xe6\xae\xb5\xe6\x96\x87\xe5\xad\x97'print(raw_string.decode()) # 这是一段文字

d.具体图示


关于不足 补=

所以 A对应的Base64字符就是QQ。上边已经说过了,原则是Base64字符的最小单位是四个字符一组,那这才两个字 符,后边补两个"=“吧。其实不用”=“也不耽误解码,之所以用”=",可能是考虑到多段编码后的Base64字符串拼起来也不会引起混淆。由此可见 Base64字符串只可能最后出现一个或两个"=",中间是不可能出现"="的。下图中字符"BC"的编码过程也是一样的。

说起Base64编码可能有些奇怪,因为大多数的编码都是由字符转化成二进制的过程,而从二进制转成字符的过程称为解码。而Base64的概念就恰好反了,由二进制转到字符称为编码,由字符到二进制称为解码。

Base64编码主要用在传输、存储、表示二进制等领域,还可以用来加密,但是这种加密比较简单,只是一眼看上去不知道什么内容罢了,当然也可以对Base64的字符序列进行定制来进行加密。

3.参考文章

传送门

Python base64编码相关推荐

  1. python base64编码_JS和Python实现AES算法

    1. AES原理 AES算法是典型的对称加密算法,AES原理可以学习这两篇文档: 漫画:什么是AES算法:https://www.toutiao.com/i6783550080784794124/ A ...

  2. Python base64编码解码

    import base64copyright = '17634231213823859694940628000252303992'def main():#转成bytes stringbytesStri ...

  3. python base64编码与图片之间的转换

    图片 --> base64 #image转base64 import base64 with open("D:\Download\1.jpg","rb") ...

  4. python如何将网络上的图片url和base64编码的图片保存在本地

    1.python base64编码的图片保存到本地 import os import base64 sss ="""/9j/4AAQSkZJRgABAQEASABIAAD ...

  5. Python 对图像进行base64编码及解码读取为numpy、opencv、matplot需要的格式

    Python 对图像进行base64编码及解码读取为numpy.opencv.matplot需要的格式 1. 效果图 2. 源码 参考 这篇博客将介绍Python如何对图像进行base64编解码及读取 ...

  6. python使用base64编码解码数据

    python使用base64编码解码数据 base64模块是用来作base64编码解码,常用于小型数据的传输.编码后的数据是一个字符串,其包括a-z.A-Z.0-9./.+共64个字符,即可用6个字节 ...

  7. Python 技术篇-用base64库对音频、图片等文件进行base64编码和解码实例演示

    最近在研究项目,需要调用百度语音的api,传入参数需要本地语音文件 base64 位编码后内容.下面来演示一下. 其实很简单,base64 是系统自带的库. base64.b64encode() 进行 ...

  8. python兼容js base64_前端base64编码的坑

    故事背景: 前后端每次通讯的时候,需要验证sign,这个sign经过了b64_md5两步骤操作. 在python端,生成sign的代码如下: import md5 import base64 m = ...

  9. 【前端】【labelme】labelme 保存 imageData 的 base64编码机制 —— python 源码探究与 js 实现

    labelme 保存 imageData 机制探究 python调试 js实现 python调试 import json import numpy as npfrom cv2 import cv2im ...

最新文章

  1. PropertiesFactoryBean PropertyPlaceholderConfigurer 区别
  2. 一个bug隐藏了另外一个bug,reloaddata,
  3. php解析multilpart,使用PHP语言实现POP3邮件的解码
  4. “让Keras更酷一些!”:分层的学习率和自由的梯度
  5. AOP日志-后置通知
  6. java中如何判断aabb_java判断改错题
  7. SpringCloud和SprigBoot之间的依赖关系怎么看
  8. 玩转Android之加速度传感器的使用,模仿微信摇一摇
  9. 9. GD32F103C8T6 定时器2的更新中断触发定时器0开始计时
  10. 用Python写一个批量生成账号的函数(用户控制数据长度、数据条数)
  11. LinkedHashMap入门
  12. 基于javaweb的医院门诊收费管理系统(java+html+jdbc+mysql)
  13. 记录一次linux信号量sem_t使用bug
  14. 数字图像处理冈萨雷斯版学习(一)
  15. 通达OA2019安装教程
  16. macos mojave_如何选择退出macOS Mojave Beta
  17. Android Init Language
  18. 关于Uncaught TypeError (Cannot read property ..undefined)的解决办法
  19. python爬取地图地址_Python爬取百度地图poi数据 !
  20. 怎么用Jenkins配置分布式环境的安全发布?

热门文章

  1. Redis与Memcached的区别
  2. python调用msfconsole全自动永恒之蓝攻击_永恒之蓝漏洞攻击完整步骤
  3. python里感叹号什么意思_感叹号!代表什么意思,标点符号的用法之感叹号
  4. 酷狗音乐导入ipod_iPod死了,听音乐也不会让人分心
  5. PyTorch入门到实战自然语言处理及计算机视觉02初识Pytorch基本框架
  6. 站上历史浪潮的计算机(二)——图灵
  7. revit2016与2017区别_【记录】VS2017配置Revit二次开发环境
  8. 找资源的网址——总结笔记二
  9. 名帖357 薛绍彭 行草《杂书卷》
  10. 卷积神经网络知识点总结