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列表推导式的使用方法
Nov 21 Python
对于Python装饰器使用的一些建议
Jun 03 Python
Python中http请求方法库汇总
Jan 06 Python
Python基础教程之tcp socket编程详解及简单实例
Feb 23 Python
通过源码分析Python中的切片赋值
May 08 Python
如何优雅地改进Django中的模板碎片缓存详解
Jul 04 Python
OpenCV2从摄像头获取帧并写入视频文件的方法
Aug 03 Python
Python实现获取系统临时目录及临时文件的方法示例
Jun 26 Python
python实现LBP方法提取图像纹理特征实现分类的步骤
Jul 11 Python
Python二维数组实现求出3*3矩阵对角线元素的和示例
Nov 29 Python
django admin管理工具自定义时间区间筛选器DateRangeFilter介绍
May 19 Python
python进行OpenCV实战之画图(直线、矩形、圆形)
Aug 27 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获取本周,上周,本月,上月,本季度日期的代码
2009/08/05 PHP
php和javascript之间变量的传递实现代码
2012/12/19 PHP
PDO版本问题 Invalid parameter number: no parameters were bound
2013/01/06 PHP
解析PHP中intval()等int转换时的意外异常情况
2013/06/21 PHP
PHP判断表达式中括号是否匹配的简单实例
2016/10/22 PHP
(function(){})()的用法与优点
2007/03/11 Javascript
javascript vvorld 在线加密破解方法
2008/11/13 Javascript
jquery 应用代码 方便的排序功能
2010/02/06 Javascript
离开页面时检测表单元素是否被修改,提示保存的js代码
2010/08/25 Javascript
全面解析Bootstrap中transition、affix的使用方法
2016/05/30 Javascript
KnockoutJS 3.X API 第四章之数据控制流if绑定和ifnot绑定
2016/10/10 Javascript
Bootstrap 填充Json数据的实例代码
2017/01/11 Javascript
详谈Angular路由与Nodejs路由的区别
2017/03/05 NodeJs
Node.js利用js-xlsx处理Excel文件的方法详解
2017/07/05 Javascript
js原生实现移动端手指滑动轮播图效果的示例
2018/01/02 Javascript
JavaScript设计模式之工厂模式和抽象工厂模式定义与用法分析
2018/07/26 Javascript
vue 项目build错误异常的解决方法
2019/04/22 Javascript
详解微信小程序调用支付接口支付
2019/04/28 Javascript
微信小程序传值以及获取值方法的详解
2019/04/29 Javascript
Vue 处理表单input单行文本框的实例代码
2019/05/09 Javascript
js+for循环实现字符串自动转义的代码(把后面的字符替换前面的字符)
2020/12/24 Javascript
python编程实现归并排序
2017/04/14 Python
Python实现字符串与数组相互转换功能示例
2017/09/22 Python
Django + Uwsgi + Nginx 实现生产环境部署的方法
2018/06/20 Python
Pytorch加载部分预训练模型的参数实例
2019/08/18 Python
python下载卫星云图合成gif的方法示例
2020/02/18 Python
如何学习Python time模块
2020/06/03 Python
python实现每天自动签到领积分的示例代码
2020/08/18 Python
美国豪华时尚女性精品店:Kirna Zabête
2018/01/11 全球购物
庆中秋节主题活动方案
2014/02/03 职场文书
员工工作表现评语
2014/04/26 职场文书
现场活动策划方案
2014/08/22 职场文书
2014年祖国生日寄语
2014/09/19 职场文书
简单的离婚协议书范本
2014/11/16 职场文书
创业计划书之养殖业
2019/10/11 职场文书
redis配置文件中常用配置详解
2021/04/14 Redis