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获取CPU和内存信息的思路与实现(linux系统)
Jan 03 Python
深入解析Python编程中super关键字的用法
Jun 24 Python
Python正则表达式教程之一:基础篇
Mar 02 Python
Python计算斗牛游戏概率算法实例分析
Sep 26 Python
取numpy数组的某几行某几列方法
Apr 03 Python
python 函数内部修改外部变量的方法
Dec 18 Python
Python基础学习之类与实例基本用法与注意事项详解
Jun 17 Python
使用Python来做一个屏幕录制工具的操作代码
Jan 18 Python
音频处理 windows10下python三方库librosa安装教程
Jun 20 Python
python 用pandas实现数据透视表功能
Dec 21 Python
Django开发RESTful API实现增删改查(入门级)
May 10 Python
利用Python+OpenCV三步去除水印
May 28 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
对于ThinkPHP框架早期版本的一个SQL注入漏洞详细分析
2014/07/04 PHP
php结合正则获取字符串中数字
2015/06/19 PHP
php通过会话控制实现身份验证实例
2016/10/18 PHP
服务器安全设置的几个注册表设置
2007/07/28 Javascript
jQuery 翻牌或百叶窗效果(内容三秒自动切换)
2012/06/14 Javascript
jQuery 设置 CSS 属性示例介绍
2014/01/16 Javascript
jquery+json实现动态商品内容展示的方法
2016/01/14 Javascript
Vue数据驱动模拟实现2
2017/01/11 Javascript
bootstrap滚动监控器使用方法解析
2017/01/13 Javascript
基于react框架使用的一些细节要点的思考
2017/05/31 Javascript
基于Vue实现关键词实时搜索高亮显示关键词
2018/07/21 Javascript
小程序云开发部署攻略(图文教程)
2018/10/30 Javascript
webpack4之如何编写loader的方法步骤
2019/06/06 Javascript
js数组相减简单示例【删除a数组所有与b数组相同元素】
2020/03/04 Javascript
vue的$http的get请求要加上params操作
2020/11/12 Javascript
python轻松实现代码编码格式转换
2015/03/26 Python
基于随机梯度下降的矩阵分解推荐算法(python)
2018/08/31 Python
python中dir()与__dict__属性的区别浅析
2018/12/10 Python
Python制作exe文件简单流程
2019/01/24 Python
Python CSS选择器爬取京东网商品信息过程解析
2020/06/01 Python
Python2与Python3关于字符串编码处理的差别总结
2020/09/07 Python
传统HTML页面实现模块化加载的方法
2018/10/15 HTML / CSS
印度网上购物首选目的地:Flipkart
2016/08/01 全球购物
法国票务网站:Ticketmaster法国
2018/07/09 全球购物
女装和独特珠宝:Sundance Catalog
2018/09/19 全球购物
海量信息软件测试笔试题
2015/08/08 面试题
do you have any Best Practice for testing
2016/06/04 面试题
钳工实习自我鉴定
2013/09/19 职场文书
品质管理部岗位职责范文
2014/03/01 职场文书
学雷锋先进个人事迹
2014/05/26 职场文书
建筑施工安全生产责任书
2014/07/22 职场文书
新课培训心得体会
2014/09/03 职场文书
晋江市委常委班子四风问题整改工作方案
2014/10/26 职场文书
职工年度考核评语
2014/12/31 职场文书
Golang流模式之grpc的四种数据流
2022/04/13 Golang
详解CSS3浏览器兼容
2022/12/24 HTML / CSS