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 相关文章推荐
Linux环境下MySQL-python安装过程分享
Feb 02 Python
python实现类的静态变量用法实例
May 08 Python
python 的列表遍历删除实现代码
Apr 12 Python
浅析AST抽象语法树及Python代码实现
Jun 06 Python
使用Pyinstaller的最新踩坑实战记录
Nov 08 Python
TF-IDF算法解析与Python实现方法详解
Nov 16 Python
Python断言assert的用法代码解析
Feb 03 Python
基于Django用户认证系统详解
Feb 21 Python
python日期时间转为字符串或者格式化输出的实例
May 29 Python
python中csv文件的若干读写方法小结
Jul 04 Python
Python实现多线程/多进程的TCP服务器
Sep 03 Python
使用python求解二次规划的问题
Feb 29 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
Pain 全世界最小最简单的PHP模板引擎 (普通版)
2011/10/23 PHP
浅谈php优化需要注意的地方
2014/11/27 PHP
phpQuery让php处理html代码像jQuery一样方便
2015/01/06 PHP
FleaPHP框架数据库查询条件($conditions)写法总结
2016/03/19 PHP
php实现支持中文的文件下载功能示例
2017/08/30 PHP
解决thinkPHP 5 nginx 部署时,只跳转首页的问题
2019/10/16 PHP
js 发个判断字符串是否为符合标准的函数
2009/04/27 Javascript
jquery模拟实现鼠标指针停止运动事件
2016/01/12 Javascript
JavaScript Base64 作为文件上传的实例代码解析
2017/02/14 Javascript
jquery dataTable 后台加载数据并分页实例代码
2017/06/07 jQuery
原生JS实现小小的音乐播放器
2017/10/16 Javascript
JavaScript函数绑定用法实例分析
2017/11/14 Javascript
jackson解析json字符串,首字母大写会自动转为小写的方法
2017/12/22 Javascript
JS实现留言板功能[楼层效果展示]
2017/12/27 Javascript
JS简单获得节点元素的方法示例
2018/02/10 Javascript
vue2.0 使用element-ui里的upload组件实现图片预览效果方法
2018/09/04 Javascript
Nodejs调用Dll模块的方法
2018/09/17 NodeJs
javascript中函数的写法实例代码详解
2018/10/28 Javascript
vue实现瀑布流组件滑动加载更多
2020/03/10 Javascript
Python冒泡排序注意要点实例详解
2016/09/09 Python
Python实现计算圆周率π的值到任意位的方法示例
2018/05/08 Python
pyqt5实现登录界面的模板
2020/05/30 Python
Python字典推导式将cookie字符串转化为字典解析
2019/08/10 Python
Django admin禁用编辑链接和添加删除操作详解
2019/11/15 Python
Tensorflow累加的实现案例
2020/02/05 Python
详解Django中异步任务之django-celery
2020/11/05 Python
加拿大消费电子和手机购物网站:The Source
2017/01/28 全球购物
巴西网上药店:Drogaria Araujo
2021/01/06 全球购物
开办化妆品公司创业计划书
2013/12/26 职场文书
土木工程求职信
2014/05/29 职场文书
铣床操作工岗位职责
2014/06/13 职场文书
爱护草坪标语
2014/06/24 职场文书
2015年度公共机构节能工作总结
2015/05/26 职场文书
python实现过滤敏感词
2021/05/08 Python
原生Js 实现的简单无缝滚动轮播图的示例代码
2021/05/10 Javascript
vue实现可以快进后退的跑马灯组件
2022/04/08 Vue.js