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 相关文章推荐
如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求
Oct 13 Python
Python排序搜索基本算法之堆排序实例详解
Dec 08 Python
Python 元类实例解析
Apr 04 Python
解决Python3中的中文字符编码的问题
Jul 18 Python
python实现推箱子游戏
Mar 25 Python
python根据文章标题内容自动生成摘要的实例
Feb 21 Python
Flask-WTF表单的使用方法
Jul 12 Python
python快速排序的实现及运行时间比较
Nov 22 Python
numpy 声明空数组详解
Dec 05 Python
Django使用Celery加redis执行异步任务的实例内容
Feb 20 Python
python操作toml文件的示例代码
Nov 27 Python
python编写扎金花小程序的实例代码
Feb 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
抓取YAHOO股票报价的类
2009/05/15 PHP
PHP ? EasyUI DataGrid 资料存的方式介绍
2012/11/07 PHP
php file_get_contents抓取Gzip网页乱码的三种解决方法
2013/11/12 PHP
php实现获取文章内容第一张图片的方法
2014/11/04 PHP
PHP实现获取中英文首字母
2015/06/19 PHP
PHP自定义错误用法示例
2016/09/28 PHP
JS+XML 省份和城市之间的联动实现代码
2009/10/14 Javascript
jquery 插件实现图片延迟加载效果代码
2010/02/06 Javascript
jquery键盘事件介绍
2011/01/31 Javascript
Jquery实现显示和隐藏的4种简单方式
2013/08/28 Javascript
JScript中的条件注释详解
2015/04/24 Javascript
javascript多行字符串的简单实现方式
2015/05/04 Javascript
vue.js指令v-for使用及索引获取
2016/11/03 Javascript
jQuery ajax的功能实现方法详解
2017/01/06 Javascript
vue实现登陆登出的实现示例
2017/09/15 Javascript
js中getter和setter用法实例分析
2018/08/14 Javascript
深入浅析vue中cross-env的使用
2019/09/12 Javascript
解决vue一个页面中复用同一个echarts组件的问题
2020/07/19 Javascript
[01:43]3.19DOTA2发布会 三代刀塔人第三代
2014/03/25 DOTA
python实现哈希表
2014/02/07 Python
python引用DLL文件的方法
2015/05/11 Python
python实现SOM算法
2018/02/23 Python
Python基于百度云文字识别API
2018/12/13 Python
Python中的正则表达式与JSON数据交换格式
2019/07/03 Python
python设置中文界面实例方法
2020/10/27 Python
css3打造一款漂亮的卡哇伊按钮
2013/03/20 HTML / CSS
澳大利亚排名第一的在线酒类商店:MyBottleShop
2018/04/26 全球购物
一套C++笔试题面试题
2012/06/06 面试题
物业保安员岗位职责
2014/03/14 职场文书
《春天来了》教学反思
2014/04/07 职场文书
初中优秀教师事迹材料
2014/08/18 职场文书
年终晚会活动方案
2014/08/21 职场文书
行政人事主管岗位职责
2015/04/11 职场文书
吧主申请感言怎么写
2015/08/03 职场文书
JavaCV实现照片马赛克效果
2022/01/22 Java/Android
使用kubeadm命令行工具创建kubernetes集群
2022/03/31 Servers