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 模拟实现生产者消费者模式的实例
Aug 10 Python
Python2.7基于笛卡尔积算法实现N个数组的排列组合运算示例
Nov 23 Python
浅析Python装饰器以及装饰器模式
May 28 Python
python判断设备是否联网的方法
Jun 29 Python
python批量创建指定名称的文件夹
Mar 21 Python
Python 3.8正式发布,来尝鲜这些新特性吧
Oct 15 Python
使用Python完成15位18位身份证的互转功能
Nov 06 Python
python文件绝对路径写法介绍(windows)
Dec 25 Python
Pytorch在NLP中的简单应用详解
Jan 08 Python
python 利用百度API识别图片文字(多线程版)
Dec 14 Python
python实现socket简单通信的示例代码
Apr 13 Python
opencv 分类白天与夜景视频的方法
Jun 05 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
第三章 php操作符与控制结构代码
2011/12/30 PHP
php强制用户转向www域名的方法
2015/06/19 PHP
php+ajax无刷新上传图片的实现方法
2016/12/06 PHP
用javascript实现的仿Flash广告图片轮换效果
2007/04/24 Javascript
自动最大化窗口的Javascript代码
2013/05/22 Javascript
js实现二代身份证号码验证详解
2014/11/20 Javascript
基于JavaScript实现 网页切出 网站title变化代码
2016/04/03 Javascript
JS实现六边形3D拖拽翻转效果的方法
2016/09/11 Javascript
BootStrap tab选项卡使用小结
2020/08/09 Javascript
vue实现列表的添加点击
2016/12/29 Javascript
js中setTimeout的妙用--防止循环超时
2017/03/06 Javascript
jQuery扇形定时器插件pietimer使用方法详解
2017/07/18 jQuery
关于vue.js组件数据流的问题
2017/07/26 Javascript
小程序实现多选框功能
2018/10/30 Javascript
Node.js实现批量下载图片简单操作示例
2020/01/18 Javascript
[46:55]Ti4 冒泡赛第二轮 LGD vs C9
2014/07/14 DOTA
python实现文本文件合并
2015/12/29 Python
win7下python3.6安装配置方法图文教程
2018/07/31 Python
python3 实现一行输入,空格隔开的示例
2018/11/14 Python
Django开发的简易留言板案例详解
2018/12/04 Python
在Python中将函数作为另一个函数的参数传入并调用的方法
2019/01/22 Python
PyTorch 导数应用的使用教程
2020/08/31 Python
用Python实现职工信息管理系统
2020/12/30 Python
请写出 BOOL flag 与"零值"比较的 if 语句
2016/02/29 面试题
农救科工作职责
2013/11/27 职场文书
数控技术专业毕业自荐书范文
2014/02/05 职场文书
《中国梦我的梦》小学生演讲稿
2014/08/20 职场文书
大学竞选班干部演讲稿
2014/08/21 职场文书
党员教师群众路线思想汇报范文
2014/10/28 职场文书
公司酒会致辞
2015/07/30 职场文书
Python爬取科目四考试题库的方法实现
2021/03/30 Python
使用vue-element-admin框架从后端动态获取菜单功能的实现
2021/04/29 Vue.js
Java中PriorityQueue实现最小堆和最大堆的用法
2021/06/27 Java/Android
关于JavaScript轮播图的实现
2021/11/20 Javascript
vue3.0 数字翻牌组件的使用方法详解
2022/04/20 Vue.js