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 相关文章推荐
9种python web 程序的部署方式小结
Jun 30 Python
使用Python编写一个最基础的代码解释器的要点解析
Jul 12 Python
Python实现的密码强度检测器示例
Aug 23 Python
Python Unittest根据不同测试环境跳过用例的方法
Dec 16 Python
Python搭建Spark分布式集群环境
Jul 05 Python
python修改FTP服务器上的文件名
Sep 11 Python
Python从入门到精通之环境搭建教程图解
Sep 26 Python
python判断链表是否有环的实例代码
Jan 31 Python
python-docx文件定位读取过程(尝试替换)
Feb 13 Python
Python使用urllib模块对URL网址中的中文编码与解码实例详解
Feb 18 Python
解决Django Haystack全文检索为空的问题
May 19 Python
简单了解python关键字global nonlocal区别
Sep 21 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
ajax php 实现写入数据库
2009/09/02 PHP
基于Windows下Apache PHP5.3.1安装教程
2010/01/08 PHP
php实现水仙花数示例分享
2014/04/03 PHP
php的无刷新操作实现方法分析
2020/02/28 PHP
xheditor与validate插件冲突的解决方案
2010/04/15 Javascript
JQueryEasyUI datagrid框架的进阶使用
2013/04/08 Javascript
JavaScript包装对象使用介绍
2013/08/29 Javascript
Javascript学习笔记之 对象篇(三) : hasOwnProperty
2014/06/24 Javascript
jquery实现二级导航下拉菜单效果
2015/12/18 Javascript
jQuery操作基本控件方法实例分析
2015/12/31 Javascript
从零学习node.js之搭建http服务器(二)
2017/02/21 Javascript
jQuery、layer实现弹出层的打开、关闭功能
2017/06/28 jQuery
微信小程序之页面跳转和参数传递的实现
2017/09/29 Javascript
javascript填充默认头像方法
2018/02/22 Javascript
微信小程序实现分享到朋友圈功能
2018/07/19 Javascript
Webpack设置环境变量的一些误区详解
2019/12/19 Javascript
jQuery实现带进度条的轮播图
2020/09/13 jQuery
[00:20]TI9不朽观赛名额抽取
2019/08/05 DOTA
[02:16]完美世界DOTA2联赛PWL S3 集锦第三期
2020/12/21 DOTA
Python随手笔记第一篇(2)之初识列表和元组
2016/01/23 Python
实例讲解Python脚本成为Windows中运行的exe文件
2019/01/24 Python
日本高岛屋百货购物网站:TAKASHIMAYA
2019/03/24 全球购物
潘多拉珠宝美国官方网站:Pandora US
2020/06/18 全球购物
Java面试中常遇到的问题,也是需要注意的几点
2013/08/30 面试题
Linux上比较文件的命令都有哪些
2012/02/24 面试题
毕业生就业推荐信范文
2013/12/01 职场文书
高中毕业自我鉴定
2013/12/22 职场文书
学生会离职感言
2014/02/11 职场文书
工程资料员岗位职责
2014/03/10 职场文书
班主任工作经验交流材料
2014/05/13 职场文书
2014年巴西世界杯口号
2014/06/05 职场文书
优秀党务工作者先进事迹材料
2014/12/25 职场文书
论文答辩开场白大全
2015/05/27 职场文书
《槐乡的孩子》教学反思
2016/02/20 职场文书
2019年教师节活动策划方案
2019/09/09 职场文书
Springboot-cli 开发脚手架,权限认证,附demo演示
2022/04/28 Java/Android