python中base64加密解密方法实例分析

 更新时间:2015年05月16日 16:24:58   作者:不吃皮蛋  
这篇文章主要介绍了python中base64加密解密方法,实例分析了base64加密解密的原理、用途与相关使用技巧,需要的朋友可以参考下

本文实例讲述了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 中 Selenium 的 send_keys() 函数用法小结

    Python 中 Selenium 的 send_keys() 函数用法小结

    send_keys() 是将数字、文本和符号等键盘输入发送到应用程序的文本框的过程, send_keys() 是 WebDriver 的一部分,每个键盘输入都会发送到此元素,这篇文章主要介绍了Python 中 Selenium 的 send_keys() 函数,需要的朋友可以参考下
    2023-11-11
  • Python 时间处理datetime实例

    Python 时间处理datetime实例

    Python Cook书中有很多章节都是针对某个库的使用进行介绍或是通过组合多个函数实现一些复杂的功能。我这里直接跳过了上一章节中对于文件处理的一些章节,直接进入对时间操作的章节。
    2008-09-09
  • GraphQL在Django中的使用教程

    GraphQL在Django中的使用教程

    这篇文章主要介绍了GraphQL在Django中的使用教程,本文结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12
  • Pycharm运行程序时,控制台输出PyDev console:starting问题

    Pycharm运行程序时,控制台输出PyDev console:starting问题

    Pycharm运行程序时,控制台输出PyDev console:starting问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • Python实现8个概率分布公式的方法详解

    Python实现8个概率分布公式的方法详解

    在本文中,我们将介绍一些常见的分布(均匀分布、高斯分布、对数正态分布等)并通过Python代码进行可视化以直观地显示它们,感兴趣的可以学习一下
    2022-05-05
  • 在jupyter notebook中使用pytorch的方法

    在jupyter notebook中使用pytorch的方法

    这篇文章主要介绍了在jupyter notebook中使用pytorch的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-09-09
  • python一行sql太长折成多行并且有多个参数的方法

    python一行sql太长折成多行并且有多个参数的方法

    今天小编就为大家分享一篇python一行sql太长折成多行并且有多个参数的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • PYQT5 vscode联合操作qtdesigner的方法

    PYQT5 vscode联合操作qtdesigner的方法

    这篇文章主要介绍了PYQT5 vscode联合操作qtdesigner的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • python中validators库的使用方法详解

    python中validators库的使用方法详解

    这篇文章主要介绍了python中validators库的使用方法详解,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • python3通过subprocess模块调用脚本并和脚本交互的操作

    python3通过subprocess模块调用脚本并和脚本交互的操作

    这篇文章主要介绍了python3通过subprocess模块调用脚本并和脚本交互的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12

最新评论