python3 常见解密加密算法实例分析【base64、MD5等】


Posted in Python onDecember 19, 2019

本文实例讲述了python3 常见解密加密算法。分享给大家供大家参考,具体如下:

一.使用base64

Base64编码,64指A-Z、a-z、0-9、+和/这64个字符,还有“=”号不属于编码字符,而是填充字符。

优点:方法简单

缺点:不保险,别人拿到密文可以自己解密出明文

编码原理:将3个字节转换成4个字节((3 X 8)=24=(4X6)),先读入3个字节,每读一个字节,左移8位,再右移四次,每次6位,这样就有4个字节了。

解码原理:将4个字节转换成3个字节,先读入4个6位(用或运算),每次左移6位,再右移3次,每次8位,这样就还原了。

Python3中base64模块与Python2使用方法有了明显的不一样,接下来简要介绍下base64模块。

Python 3.5.2+ (default, Aug  5 2016, 08:07:14)
[GCC 6.1.1 20160724] on linux
Type "help", "copyright", "credits" or "license" for more information.

首先导入base64模块

>>> import base64
>>> my_str='hello'

然后把字符串转码为UTF-8格式:

>>> utf_str=my_str.encode(encoding="utf-8")
>>> utf_str
b'hello'

我们试着用Base64方式加密:

>>> word=base64.b64encode(utf_str)
>>> word
b'aGVsbG8='

最后用Base64方式解密:

>>> hello=base64.b64decode(word.decode())
>>> hello
b'hello'
>>> hello.decode()
'hello'

可以看到,已经成功解密出来!

二.使用pycrypto

Python有个专门的加密解密工具包pycropto,这个包里面实现了MD2,MD4,MD5,RIPEMD,SHA1,SHA256等加密算法。

>>> from Crypto.Hash import MD5
>>> obj = MD5.new()
>>> obj.update(b"hello")
>>> obj.hexdigest()
>>> obj.hexdigest()
'5d41402abc4b2a76b9719d911017c592'
Python 相关文章推荐
python实现DNS正向查询、反向查询的例子
Apr 25 Python
Python模仿POST提交HTTP数据及使用Cookie值的方法
Nov 10 Python
Python科学计算之Pandas详解
Jan 15 Python
微信跳一跳python辅助脚本(总结)
Jan 11 Python
python实现聚类算法原理
Feb 12 Python
Python统计单词出现的次数
Apr 04 Python
Python 实现使用dict 创建二维数据、DataFrame
Apr 13 Python
浅谈Python里面小数点精度的控制
Jul 16 Python
Python中的 enum 模块源码详析
Jan 09 Python
Python递归函数特点及原理解析
Mar 04 Python
Python爬虫HTPP请求方法有哪些
Jun 03 Python
Python读取二进制文件代码方法解析
Jun 22 Python
Python定义函数时参数有默认值问题解决
Dec 19 #Python
Python爬取腾讯视频评论的思路详解
Dec 19 #Python
使用Pandas将inf, nan转化成特定的值
Dec 19 #Python
pandas中read_csv的缺失值处理方式
Dec 19 #Python
python错误调试及单元文档测试过程解析
Dec 19 #Python
Python3.5 win10环境下导入kera/tensorflow报错的解决方法
Dec 19 #Python
解决Python列表字符不区分大小写的问题
Dec 19 #Python
You might like
拼音码表的生成
2006/10/09 PHP
如何让CI框架支持service层
2014/10/29 PHP
基于linnux+phantomjs实现生成图片格式的网页快照
2015/04/15 PHP
单击按钮显示隐藏子菜单经典案例
2013/01/04 Javascript
在JavaScript并非所有的一切都是对象
2013/04/11 Javascript
JavaScript禁止页面操作的示例代码
2013/12/17 Javascript
jQuery Easyui datagrid连续发送两次请求问题
2016/12/13 Javascript
简单易懂的天气插件(代码分享)
2017/02/04 Javascript
JavaScript中三种常见的排序方法
2017/02/24 Javascript
nodejs处理图片的中间件node-images详解
2017/05/08 NodeJs
通过命令行创建vue项目的方法
2017/07/20 Javascript
for循环 + setTimeout 结合一些示例(前端面试题)
2017/08/30 Javascript
详解在HTTPS 项目中使用百度地图 API
2019/04/26 Javascript
jQuery实现条件搜索查询、实时取值及升降序排序的方法分析
2019/05/04 jQuery
微信小程序吸底区域适配iPhoneX的实现
2020/04/09 Javascript
React 条件渲染最佳实践小结(7种)
2020/09/27 Javascript
[03:46]显微镜下的DOTA2第七期——满血与残血
2014/06/20 DOTA
[01:05:32]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第一局
2016/03/04 DOTA
Python字符遍历的艺术
2008/09/06 Python
python使用reportlab画图示例(含中文汉字)
2013/12/03 Python
python使用Flask操作mysql实现登录功能
2018/05/14 Python
解决Django数据库makemigrations有变化但是migrate时未变动问题
2018/05/30 Python
python的pandas工具包,保存.csv文件时不要表头的实例
2018/06/14 Python
python通过微信发送邮件实现电脑关机
2018/06/20 Python
Python中的函数式编程:不可变的数据结构
2018/10/08 Python
python绘制中国大陆人口热力图
2018/11/07 Python
python 处理telnet返回的More,以及get想要的那个参数方法
2019/02/14 Python
Python和Sublime整合过程图示
2019/12/25 Python
Python 实现将某一列设置为str类型
2020/07/14 Python
pycharm配置安装autopep8自动规范代码的实现
2021/03/02 Python
澳大利亚最大的护发和护肤品购物网站:RY
2019/12/26 全球购物
信息技术课后反思
2014/04/27 职场文书
应届生求职自荐信
2014/07/04 职场文书
纪检干部对照检查材料
2014/08/22 职场文书
武当山导游词
2015/02/03 职场文书
俄罗斯十大城市人口排名,第三首都仅排第六,第二是北方首都
2022/03/20 杂记