python中base64加密解密方法实例分析


Posted in Python onMay 16, 2015

本文实例讲述了python中base64加密解密方法。分享给大家供大家参考。具体分析如下:

一、base64

Base64是一种基于64个可打印字符来表示二进制数据的表示方法。由于2的6次方等于64,所以每6个比特为一个单元,对应某个可打印字符。三个字节有24个比特,对应于4个Base64单元,即3个字节需要用4个可打印字符来表示。它可用来作为电子邮件的传输编码。在Base64中的可打印字符包括字母A-Z、a-z、数字0-9 ,这样共有62个字符,此外两个可打印符号在不同的系统中而不同。编码后的数据比原始数据略长,为原来的4/3。

Base64常用于在通常处理文本数据的场合,表示、传输、存储一些二进制数据(或不可打印的字符串)。包括MIME的email,email via MIME, 在XML中存储复杂数据.

在邮件中的用途:

在MIME格式的电子邮件中,base64可以用来将binary的字节序列数据编码成ASCII字符序列构成的文本。使用时,在传输编码方式中指定base64。使用的字符包括大小写字母各26个,加上10个数字,和加号“+”,斜杠“/”,一共64个字符,等号“=”用来作为后缀用途。

在URL中的用途:

标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式,而这些“%”号在存入数据库时还需要再进行转换,因为ANSI SQL中已将“%”号用作通配符。

为解决此问题,可采用一种用于URL的改进Base64编码,它不在末尾填充'='号,并将标准Base64中的“+”和“/”分别改成了“*”和“-”,这样就免去了在URL编解码和数据库存储时所要作的转换,避免了编码信息长度在此过程中的增加,并统一了数据库、表单等处对象标识符的格式。

另有一种用于正则表达式的改进Base64变种,它将“+”和“/”改成了“!”和“-”,因为“+”,“*”在正则表达式中都可能具有特殊含义。

二、python中使用

C:\Python27>python
Python 2.7.2 (default, Jun 12 2011, 14:24:46) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import base64
>>> str = 'haha'
>>> base64.b64encode(str)
'aGFoYQ=='
>>> base64.b64decode('aGFoYQ==')
'haha'

三、其他的方法,这个比较重要

base64.b64encode(s[, altchars])
base64.b64decode(s[, altchars])
altchars为可选的参数,用来替换+和/的一个两个长度的字符串。
base64.urlsafe_b64encode(s)
base64.urlsafe_b64decode(s)

此方法中用-代替了+,用_代替了/ ,这样可以保证编码后的字符串放在url里可以正常访问

base64.b32encode(s)
base64.b32decode(s[, casefold[, map01]])
base64.b16encode(s)
base64.b16decode(s[, casefold])

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
python多重继承新算法C3介绍
Sep 28 Python
Python使用scrapy采集数据过程中放回下载过大页面的方法
Apr 08 Python
python select.select模块通信全过程解析
Sep 20 Python
Python3中正则模块re.compile、re.match及re.search函数用法详解
Jun 11 Python
Python实现自定义函数的5种常见形式分析
Jun 16 Python
详解Python连接MySQL数据库的多种方式
Apr 16 Python
Django组件cookie与session的具体使用
Jun 05 Python
django 单表操作实例详解
Jul 30 Python
python实现图片二值化及灰度处理方式
Dec 07 Python
Ubuntu16.04安装python3.6.5步骤详解
Jan 10 Python
python GUI库图形界面开发之PyQt5树形结构控件QTreeWidget详细使用方法与实例
Mar 02 Python
Django调用支付宝接口代码实例详解
Apr 04 Python
python中threading超线程用法实例分析
May 16 #Python
python实现合并两个数组的方法
May 16 #Python
python简单实现基数排序算法
May 16 #Python
Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法
May 16 #Python
python中循环语句while用法实例
May 16 #Python
pymongo实现多结果进行多列排序的方法
May 16 #Python
python使用线程封装的一个简单定时器类实例
May 16 #Python
You might like
PHP中Memcache操作类及用法实例
2014/12/12 PHP
php对数组内元素进行随机调换的方法
2015/05/12 PHP
laradock环境docker-compose操作详解
2019/07/29 PHP
Firefox+FireBug使JQuery的学习更加轻松愉快
2010/01/01 Javascript
一个javascript图片阅览组件
2010/11/09 Javascript
Angularjs制作简单的路由功能demo
2015/04/14 Javascript
JQuery实现样式设置、追加、移除与切换的方法
2015/06/11 Javascript
设计模式中的组合模式在JavaScript程序构建中的使用
2016/05/18 Javascript
jquery显示隐藏元素的实现代码
2016/05/19 Javascript
BootStrap组件之进度条的基本用法
2017/01/19 Javascript
JS跨域请求外部服务器的资源
2017/02/06 Javascript
使用原生js写ajax实例(推荐)
2017/05/31 Javascript
Vue和Bootstrap的整合思路详解
2017/06/30 Javascript
ActiveX控件的使用-js实现打印超市小票功能代码详解
2017/11/22 Javascript
NodeJs实现定时任务的示例代码
2017/12/05 NodeJs
深入浅析Node环境和浏览器的区别
2018/08/14 Javascript
Vue在页面数据渲染完成之后的调用方法
2018/09/11 Javascript
AjaxFileUpload.js实现异步上传文件功能
2019/04/19 Javascript
[02:44]完美大师赛主赛事淘汰赛第二日观众采访
2017/11/24 DOTA
python类继承用法实例分析
2015/05/27 Python
Python中函数的参数传递与可变长参数介绍
2015/06/30 Python
Python 两个列表的差集、并集和交集实现代码
2016/09/21 Python
Python 含参构造函数实例详解
2017/05/25 Python
使用Pyinstaller的最新踩坑实战记录
2017/11/08 Python
将Dataframe数据转化为ndarry数据的方法
2018/06/28 Python
python实现在图片上画特定大小角度矩形框
2018/10/24 Python
在PyTorch中Tensor的查找和筛选例子
2019/08/18 Python
python getopt模块使用实例解析
2019/12/18 Python
Python中pyecharts安装及安装失败的解决方法
2020/02/18 Python
使用python批量转换文件编码为UTF-8的实现
2020/04/03 Python
物业管理毕业生个人的求职信
2013/11/30 职场文书
公司会议策划方案
2014/05/17 职场文书
售后客服工作职责
2014/06/16 职场文书
小学感恩节活动策划方案
2014/10/06 职场文书
mybatis调用sqlserver存储过程返回结果集的方法
2021/05/08 SQL Server
《杜鹃的婚约》OP主题曲「凸凹」无字幕影像公开
2022/04/08 日漫