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实现3行代码解简单的一元一次方程
Aug 18 Python
Python中字符串对齐方法介绍
May 21 Python
浅析Python中的多条件排序实现
Jun 07 Python
git使用.gitignore设置不生效或不起作用问题的解决方法
Jun 01 Python
取numpy数组的某几行某几列方法
Apr 03 Python
对Tensorflow中的矩阵运算函数详解
Jul 27 Python
python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)
Apr 18 Python
使用python将mysql数据库的数据转换为json数据的方法
Jul 01 Python
python实现差分隐私Laplace机制详解
Nov 25 Python
python爬取天气数据的实例详解
Nov 20 Python
基于Python实现对比Exce的工具
Apr 07 Python
Python中np.random.randint()参数详解及用法实例
Sep 23 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
深入了解php4(1)--回到未来
2006/10/09 PHP
php生成数组的使用示例 php全组合算法
2014/01/16 PHP
Codeigniter的dom类用法实例
2015/06/26 PHP
Laravel框架实现即点即改功能的方法分析
2019/10/31 PHP
phpcmsv9.0任意文件上传漏洞解析
2020/10/20 PHP
javascript+xml技术实现分页浏览
2008/07/27 Javascript
Javascript连接多个数组不用concat来解决
2014/03/24 Javascript
用javascript将数据导入Excel示例代码
2014/09/10 Javascript
深入理解javascript构造函数和原型对象
2014/09/23 Javascript
jQuery实现数字加减效果汇总
2014/12/16 Javascript
JavaScript中的对象的extensible属性介绍
2014/12/30 Javascript
JS中mouseover和mouseout多次触发问题如何解决
2016/06/06 Javascript
jQuery动态改变多行文本框高度的方法
2016/09/07 Javascript
React-router中结合webpack实现按需加载实例
2017/05/25 Javascript
jQuery实现导航栏头部菜单项点击后变换颜色的方法
2017/07/19 jQuery
Vue面试题及Vue知识点整理
2018/10/07 Javascript
使用layui前端框架弹出form表单以及提交的示例
2019/10/25 Javascript
Node.js API详解之 querystring用法实例分析
2020/04/29 Javascript
浅谈鸿蒙 JavaScript GUI 技术栈
2020/09/17 Javascript
关于Python如何避免循环导入问题详解
2017/09/14 Python
pygame实现俄罗斯方块游戏(AI篇2)
2019/10/29 Python
利用python画出AUC曲线的实例
2020/02/28 Python
Python并发请求下限制QPS(每秒查询率)的实现代码
2020/06/05 Python
利用css3制作3D样式按钮实现代码
2013/03/18 HTML / CSS
详解CSS3中的box-sizing(content-box与border-box)
2019/04/19 HTML / CSS
CK美国官网:Calvin Klein
2016/08/26 全球购物
意大利香水和彩妆护肤品购物网站:Ditano
2017/08/13 全球购物
Made in Design德国:设计师家具、灯具和装饰
2019/10/31 全球购物
英国领先的餐饮折扣俱乐部:Gourmet Society
2020/07/26 全球购物
台湾屈臣氏网路商店:Watsons台湾
2020/12/29 全球购物
美国在线肉类和海鲜配送:Crowd Cow
2020/10/02 全球购物
教师专业理论水平的自我评价分享
2013/11/09 职场文书
预备党员思想汇报范文
2013/12/29 职场文书
运动会班级前导词
2015/07/20 职场文书
解决goland 导入项目后import里的包报红问题
2021/05/06 Golang
 Python 中 logging 模块使用详情
2022/03/03 Python