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多进程分块读取超大文件的方法
Apr 13 Python
python安装cx_Oracle模块常见问题与解决方法
Feb 21 Python
python非递归全排列实现方法
Apr 10 Python
python添加模块搜索路径方法
Sep 11 Python
Python最火、R极具潜力 2017机器学习调查报告
Dec 11 Python
Python使用sort和class实现的多级排序功能示例
Aug 15 Python
Python3和pyqt5实现控件数据动态显示方式
Dec 13 Python
Tensorflow 模型转换 .pb convert to .lite实例
Feb 12 Python
Python绘制全球疫情变化地图的实例代码
Apr 20 Python
python map比for循环快在哪
Sep 21 Python
python利用paramiko实现交换机巡检的示例
Sep 22 Python
python drf各类组件的用法和作用
Jan 12 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
php出现Cannot modify header information问题的解决方法大全
2008/04/09 PHP
PHP 简单日历实现代码
2009/10/28 PHP
PHP 常用数组内部函数(Array Functions)介绍
2013/06/05 PHP
php实现图片添加水印功能
2014/02/13 PHP
PHP使用逆波兰式计算工资的方法
2015/07/29 PHP
laravel如何开启跨域功能示例详解
2017/08/31 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
Js参数值中含有单引号或双引号问题的解决方法
2013/11/06 Javascript
js实现的标题栏新消息闪烁提示效果
2014/06/06 Javascript
jQuery实现html表格动态添加新行的方法
2015/05/28 Javascript
js判断数组key是否存在(不用循环)的简单实例
2016/08/03 Javascript
Vue单页式应用(Hash模式下)实现微信分享的实例
2017/07/21 Javascript
解决canvas画布使用fillRect()时高度出现双倍效果的问题
2017/08/03 Javascript
Node.js静态服务器的实现方法
2018/02/28 Javascript
使用weixin-java-tools完成微信授权登录、微信支付的示例
2018/09/26 Javascript
JS实现的自定义map方法示例
2019/05/17 Javascript
Node.js API详解之 timer模块用法实例分析
2020/05/07 Javascript
解决vue项目中某一页面不想引用公共组件app.vue的问题
2020/08/14 Javascript
Vue自定义组件双向绑定实现原理及方法详解
2020/09/03 Javascript
javascript实现一款好看的秒表计时器
2020/09/05 Javascript
python机器学习之决策树分类详解
2017/12/20 Python
python将txt文档每行内容循环插入数据库的方法
2018/12/28 Python
利用python如何在前程无忧高效投递简历
2019/05/07 Python
Python 把序列转换为元组的函数tuple方法
2019/06/27 Python
德国受欢迎的旅游和休闲网站:lastminute.de
2019/09/23 全球购物
测绘工程专业个人自我评价
2013/12/01 职场文书
平面设计师工作职责范文
2013/12/03 职场文书
大学军训感言200字
2014/02/26 职场文书
环保建议书作文
2014/03/12 职场文书
《去年的树》教学反思
2014/04/11 职场文书
一帮一活动总结
2014/05/08 职场文书
竞聘上岗演讲
2014/05/19 职场文书
服务理念口号
2014/06/11 职场文书
2014大四本科生自我鉴定总结
2014/10/04 职场文书
简历中的自我评价应该这样写!
2019/07/12 职场文书
MySQL命令行操作时的编码问题详解
2021/04/14 MySQL