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实现发送和获取手机短信验证码
Jan 15 Python
Python数据结构之顺序表的实现代码示例
Nov 15 Python
详解Python if-elif-else知识点
Jun 11 Python
python+selenium打印当前页面的titl和url方法
Jun 22 Python
在python中bool函数的取值方法
Nov 01 Python
python opencv 读取本地视频文件 修改ffmpeg的方法
Jan 26 Python
Python常用爬虫代码总结方便查询
Feb 25 Python
pytorch中的embedding词向量的使用方法
Aug 18 Python
python保存log日志,实现用log日志画图
Dec 24 Python
解析python 中/ 和 % 和 //(地板除)
Jun 28 Python
Pyinstaller打包Scrapy项目的实现步骤
Sep 22 Python
Python基础进阶之海量表情包多线程爬虫功能的实现
Dec 17 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用户注册页面利用js进行表单验证具体实例
2013/10/17 PHP
jcarousellite.js 基于Jquery的图片无缝滚动插件
2010/12/30 Javascript
基于jquery扩展漂亮的下拉框可以二次修改
2013/11/19 Javascript
js中settimeout方法加参数的使用实例
2014/02/27 Javascript
jQuery中事件对象e的事件冒泡用法示例介绍
2014/04/25 Javascript
悬浮广告方法日常收集整理
2016/03/18 Javascript
jQuery实现布局高宽自适应的简单实例
2016/05/28 Javascript
jQuery原理系列-常用Dom操作详解
2016/06/07 Javascript
关于List.ToArray()方法的效率测试
2016/09/30 Javascript
jQuery源码解读之extend()与工具方法、实例方法详解
2017/03/30 jQuery
jstree单选功能的实现方法
2017/06/07 Javascript
vue组件文档(.md)中如何自动导入示例(.vue)详解
2019/01/25 Javascript
图文详解vue框架安装步骤
2019/02/12 Javascript
Python中的模块和包概念介绍
2015/04/13 Python
python和bash统计CPU利用率的方法
2015/07/10 Python
python实现n个数中选出m个数的方法
2018/11/13 Python
详解python列表生成式和列表生成式器区别
2019/03/27 Python
Python模拟登录之滑块验证码的破解(实例代码)
2019/11/18 Python
Python脚本操作Excel实现批量替换功能
2019/11/20 Python
python图形界面开发之wxPython树控件使用方法详解
2020/02/24 Python
Giglio俄罗斯奢侈品购物网:男士、女士、儿童高级时装
2018/07/27 全球购物
娇韵诗法国官网:Clarins法国
2019/01/29 全球购物
Ellos瑞典官网:北欧地区时尚、美容和住宅领域领先的电子商务网站
2019/11/21 全球购物
adidas泰国官网:adidas TH
2020/07/11 全球购物
学生实习介绍信
2014/01/15 职场文书
学员自我鉴定
2014/03/19 职场文书
《诚实与信任》教学反思
2014/04/10 职场文书
2014医学院领导干部四风对照检查材料思想汇报
2014/09/16 职场文书
县级领导干部开展党的群众路线教育实践活动工作汇报
2014/10/25 职场文书
房贷工资证明范本
2015/06/12 职场文书
小学运动会加油词
2015/07/18 职场文书
宾馆客房管理制度
2015/08/06 职场文书
春节随笔
2015/08/15 职场文书
合理化建议书范文
2015/09/14 职场文书
详解CSS3.0(Cascading Style Sheet) 层叠级联样式表
2021/07/16 HTML / CSS
分位数回归模型quantile regeression应用详解及示例教程
2021/11/02 Python