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 相关文章推荐
python3实现短网址和数字相互转换的方法
Apr 28 Python
Python实现模拟登录及表单提交的方法
Jul 25 Python
Python找出list中最常出现元素的方法
Jun 14 Python
Python3.6正式版新特性预览
Dec 15 Python
python机器学习案例教程——K最近邻算法的实现
Dec 28 Python
对Python3.6 IDLE常用快捷键介绍
Jul 16 Python
Python自动化运维之Ansible定义主机与组规则操作详解
Jun 13 Python
python tkinter实现屏保程序
Jul 30 Python
Python 正则表达式爬虫使用案例解析
Sep 23 Python
python梯度下降算法的实现
Feb 24 Python
django 解决扩展自带User表遇到的问题
May 14 Python
matplotlib阶梯图的实现(step())
Mar 02 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/01/01 PHP
php基础设计模式大全(注册树模式、工厂模式、单列模式)
2015/08/31 PHP
php判断邮箱地址是否存在的方法
2016/02/13 PHP
PHP从数组中删除元素的四种方法实例
2017/05/12 PHP
IE 缓存策略的BUG的解决方法
2007/07/21 Javascript
jquery解决图片路径不存在执行替换路径
2013/02/06 Javascript
JS分页控件 可用于无刷新分页
2013/07/23 Javascript
javascript动态创建及删除元素的方法
2014/12/22 Javascript
函数window.open实现关闭所有的子窗口
2015/08/03 Javascript
jQuery EasyUi实战教程之布局篇
2016/01/26 Javascript
学习Angular中作用域需要注意的坑
2016/08/17 Javascript
Javascript动画效果(3)
2016/10/11 Javascript
JS取数字小数点后两位或n位的简单方法
2016/10/24 Javascript
jQuery插件实现可输入和自动匹配的下拉框
2016/10/24 Javascript
vue中appear的用法
2017/08/17 Javascript
基于Vue的移动端图片裁剪组件功能
2017/11/28 Javascript
[原创]jquery判断元素内容是否为空的方法
2018/05/04 jQuery
JavaScript继承与多继承实例分析
2018/05/26 Javascript
bootstrap tooltips在 angularJS中的使用方法
2019/04/10 Javascript
JavaScript如何实现监听键盘输入和鼠标监点击
2020/07/20 Javascript
[37:35]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第二局
2016/02/25 DOTA
利用Python如何实现数据驱动的接口自动化测试
2018/05/11 Python
python 爬虫一键爬取 淘宝天猫宝贝页面主图颜色图和详情图的教程
2018/05/22 Python
解决python中os.listdir()函数读取文件夹下文件的乱序和排序问题
2018/10/17 Python
详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法
2019/07/06 Python
pycharm新建一个python工程步骤
2019/07/16 Python
python爬虫之爬取百度音乐的实现方法
2019/08/24 Python
通过代码实例解析Pytest运行流程
2020/08/20 Python
基于HTML5 FileSystem API的使用介绍
2013/04/24 HTML / CSS
应聘医药代表职位求职信
2013/10/21 职场文书
人代会标语
2014/06/30 职场文书
2014财务部年度工作总结
2014/12/08 职场文书
2014年银行年终工作总结
2014/12/19 职场文书
计算机专业自荐信范文
2015/03/26 职场文书
2015年煤矿工作总结
2015/04/28 职场文书
goland 清除所有的默认设置操作
2021/04/28 Golang