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编程语言的35个与众不同之处(语言特征和使用技巧)
Jul 07 Python
Python线程中对join方法的运用的教程
Apr 09 Python
Python数据分析中Groupby用法之通过字典或Series进行分组的实例
Dec 08 Python
Python实战小程序利用matplotlib模块画图代码分享
Dec 09 Python
让Python更加充分的使用Sqlite3
Dec 11 Python
Django框架教程之正则表达式URL误区详解
Jan 28 Python
python表格存取的方法
Mar 07 Python
使用实现pandas读取csv文件指定的前几行
Apr 20 Python
Pytorch之finetune使用详解
Jan 18 Python
win10安装tensorflow-gpu1.8.0详细完整步骤
Jan 20 Python
Keras 使用 Lambda层详解
Jun 10 Python
python openpyxl模块的使用详解
Feb 25 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 IPV6正则表达式验证代码
2010/02/16 PHP
php ss7.5的数据调用 (笔记)
2010/03/08 PHP
浅析php数据类型转换
2014/01/09 PHP
小谈php正则提取图片地址
2014/03/27 PHP
PHP实现UTF-8文件BOM自动检测与移除实例
2014/11/05 PHP
示例详解Laravel重置密码代码重构
2016/08/10 PHP
Prototype 学习 Prototype对象
2009/07/12 Javascript
jQuery ajax cache缓存问题
2010/07/01 Javascript
js动态在form上插入enctype=multipart/form-data的问题
2012/05/24 Javascript
js整数字符串转换为金额类型数据(示例代码)
2013/12/26 Javascript
JavaScript常用标签和方法总结
2015/09/01 Javascript
浏览器环境下JavaScript脚本加载与执行探析之动态脚本与Ajax脚本注入
2016/01/19 Javascript
理解javascript中的MVC模式
2016/01/28 Javascript
JavaScript的React Web库的理念剖析及基础上手指南
2016/05/10 Javascript
JavaScript实现二维坐标点排序效果
2017/07/18 Javascript
jQuery封装animate.css的实例
2018/01/04 jQuery
微信上传视频文件提示(推荐)
2018/11/22 Javascript
Bootstrap 时间日历插件bootstrap-datetimepicker配置与应用小结
2019/05/28 Javascript
Vue自定义多选组件使用详解
2020/09/08 Javascript
Python中的descriptor描述器简明使用指南
2016/06/02 Python
CentOS7.3编译安装Python3.6.2的方法
2018/01/22 Python
python实现代码统计程序
2019/09/19 Python
Python 闭包,函数分隔作用域,nonlocal声明非局部变量操作示例
2019/10/14 Python
30秒学会30个超实用Python代码片段【收藏版】
2019/10/15 Python
获取python运行输出的数据并解析存为dataFrame实例
2020/07/07 Python
利用Canvas模仿百度贴吧客户端loading小球的方法示例
2017/08/13 HTML / CSS
土耳其时尚潮流在线购物网站:Trendyol
2017/10/10 全球购物
翻新二手苹果产品的网络领导者:Mac of all Trades
2017/12/19 全球购物
在校生钳工实习自我鉴定
2013/09/19 职场文书
制衣厂各岗位职责
2013/12/02 职场文书
勤俭节约倡议书
2014/04/14 职场文书
精神文明建设汇报材料
2014/12/24 职场文书
公司酒会致辞
2015/07/30 职场文书
德劲DE1108畅想
2021/04/22 无线电
Redis命令处理过程源码解析
2022/02/12 Redis
python和anaconda的区别
2022/05/06 Python