Python base64编码
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编码相关推荐
- python base64编码_JS和Python实现AES算法
1. AES原理 AES算法是典型的对称加密算法,AES原理可以学习这两篇文档: 漫画:什么是AES算法:https://www.toutiao.com/i6783550080784794124/ A ...
- Python base64编码解码
import base64copyright = '17634231213823859694940628000252303992'def main():#转成bytes stringbytesStri ...
- python base64编码与图片之间的转换
图片 --> base64 #image转base64 import base64 with open("D:\Download\1.jpg","rb") ...
- python如何将网络上的图片url和base64编码的图片保存在本地
1.python base64编码的图片保存到本地 import os import base64 sss ="""/9j/4AAQSkZJRgABAQEASABIAAD ...
- Python 对图像进行base64编码及解码读取为numpy、opencv、matplot需要的格式
Python 对图像进行base64编码及解码读取为numpy.opencv.matplot需要的格式 1. 效果图 2. 源码 参考 这篇博客将介绍Python如何对图像进行base64编解码及读取 ...
- python使用base64编码解码数据
python使用base64编码解码数据 base64模块是用来作base64编码解码,常用于小型数据的传输.编码后的数据是一个字符串,其包括a-z.A-Z.0-9./.+共64个字符,即可用6个字节 ...
- Python 技术篇-用base64库对音频、图片等文件进行base64编码和解码实例演示
最近在研究项目,需要调用百度语音的api,传入参数需要本地语音文件 base64 位编码后内容.下面来演示一下. 其实很简单,base64 是系统自带的库. base64.b64encode() 进行 ...
- python兼容js base64_前端base64编码的坑
故事背景: 前后端每次通讯的时候,需要验证sign,这个sign经过了b64_md5两步骤操作. 在python端,生成sign的代码如下: import md5 import base64 m = ...
- 【前端】【labelme】labelme 保存 imageData 的 base64编码机制 —— python 源码探究与 js 实现
labelme 保存 imageData 机制探究 python调试 js实现 python调试 import json import numpy as npfrom cv2 import cv2im ...
最新文章
- PropertiesFactoryBean PropertyPlaceholderConfigurer 区别
- 一个bug隐藏了另外一个bug,reloaddata,
- php解析multilpart,使用PHP语言实现POP3邮件的解码
- “让Keras更酷一些!”:分层的学习率和自由的梯度
- AOP日志-后置通知
- java中如何判断aabb_java判断改错题
- SpringCloud和SprigBoot之间的依赖关系怎么看
- 玩转Android之加速度传感器的使用,模仿微信摇一摇
- 9. GD32F103C8T6 定时器2的更新中断触发定时器0开始计时
- 用Python写一个批量生成账号的函数(用户控制数据长度、数据条数)
- LinkedHashMap入门
- 基于javaweb的医院门诊收费管理系统(java+html+jdbc+mysql)
- 记录一次linux信号量sem_t使用bug
- 数字图像处理冈萨雷斯版学习(一)
- 通达OA2019安装教程
- macos mojave_如何选择退出macOS Mojave Beta
- Android Init Language
- 关于Uncaught TypeError (Cannot read property ..undefined)的解决办法
- python爬取地图地址_Python爬取百度地图poi数据 !
- 怎么用Jenkins配置分布式环境的安全发布?
热门文章
- Redis与Memcached的区别
- python调用msfconsole全自动永恒之蓝攻击_永恒之蓝漏洞攻击完整步骤
- python里感叹号什么意思_感叹号!代表什么意思,标点符号的用法之感叹号
- 酷狗音乐导入ipod_iPod死了,听音乐也不会让人分心
- PyTorch入门到实战自然语言处理及计算机视觉02初识Pytorch基本框架
- 站上历史浪潮的计算机(二)——图灵
- revit2016与2017区别_【记录】VS2017配置Revit二次开发环境
- 找资源的网址——总结笔记二
- 名帖357 薛绍彭 行草《杂书卷》
- 卷积神经网络知识点总结