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(Tornado)模拟登录小米抢手机
Nov 12 Python
python提取页面内url列表的方法
May 25 Python
Python操作使用MySQL数据库的实例代码
May 25 Python
python django 增删改查操作 数据库Mysql
Jul 27 Python
python的dataframe和matrix的互换方法
Apr 11 Python
Python使用numpy模块创建数组操作示例
Jun 20 Python
快速解决docker-py api版本不兼容的问题
Aug 30 Python
python 递归调用返回None的问题及解决方法
Mar 16 Python
Python经纬度坐标转换为距离及角度的实现
Nov 01 Python
python用700行代码实现http客户端
Jan 14 Python
分享python函数常见关键字
Apr 26 Python
关于pytest结合csv模块实现csv格式的数据驱动问题
May 30 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管理内存函数 memory_get_usage()使用介绍
2012/09/23 PHP
php如何调用webservice应用介绍
2012/11/24 PHP
php命令行写shell实例详解
2018/07/19 PHP
解决windows上php xdebug 无法调试的问题
2020/02/19 PHP
判断页面是关闭还是刷新的js代码
2007/01/28 Javascript
Javascript入门学习资料收集整理篇
2008/07/06 Javascript
一个cssQuery对象 javascript脚本实现代码
2009/07/21 Javascript
jquery select下拉框操作的一些说明
2010/04/02 Javascript
JSONP获取Twitter和Facebook文章数的具体步骤
2014/02/24 Javascript
在jquery中的ajax方法怎样通过JSONP进行远程调用
2014/04/04 Javascript
详解JavaScript逻辑And运算符
2015/12/04 Javascript
JavaScript每天必学之基础知识
2016/09/17 Javascript
NodeJs读取JSON文件格式化时的注意事项
2016/09/25 NodeJs
jQuery ajax读取本地json文件的实例
2017/10/31 jQuery
angular6的table组件开发的实现示例
2018/12/26 Javascript
解决layui弹出层layer的area过大被遮挡的问题
2019/09/21 Javascript
layui table 复选框跳页后再回来保持原来选中的状态示例
2019/10/26 Javascript
jQuery实现穿梭框效果
2021/01/19 jQuery
javascript实现下拉菜单效果
2021/02/09 Javascript
浅谈python中copy和deepcopy中的区别
2017/10/23 Python
Python爬取十篇新闻统计TF-IDF
2018/01/03 Python
Python Django的安装配置教程图文详解
2019/07/17 Python
python如何通过pyqt5实现进度条
2020/01/20 Python
django列表筛选功能的实现代码
2020/03/27 Python
Python基于stuck实现scoket文件传输
2020/04/02 Python
Python如何使用正则表达式爬取京东商品信息
2020/06/01 Python
python属于跨平台语言码
2020/06/09 Python
什么是python的必选参数
2020/06/21 Python
给Django Admin添加验证码和多次登录尝试限制的实现
2020/07/26 Python
web字体加载方案优化小结
2019/11/29 HTML / CSS
购买大码女装:Lane Bryant
2016/09/07 全球购物
马来西亚航空官方网站:Malaysia Airlines
2017/07/28 全球购物
几道PHP的面试题
2012/05/19 面试题
2015年度培训工作总结范文
2015/04/02 职场文书
超市员工辞职信范文
2015/05/12 职场文书
OpenCV-Python实现人脸磨皮算法
2021/06/07 Python