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使用递归、尾递归、循环三种方式实现斐波那契数列
Jan 16 Python
Python查找数组中数值和下标相等的元素示例【二分查找】
Feb 13 Python
20行python代码实现人脸识别
May 05 Python
20行python代码的入门级小游戏的详解
May 05 Python
Django中密码的加密、验密、解密操作
Dec 19 Python
Django多层嵌套ManyToMany字段ORM操作详解
May 19 Python
Python使用Selenium模拟浏览器自动操作功能
Sep 08 Python
Python用access判断文件是否被占用的实例方法
Dec 17 Python
Django自带的用户验证系统实现
Dec 18 Python
Python之京东商品秒杀的实现示例
Jan 06 Python
10张动图学会python循环与递归问题
Feb 06 Python
python pandas 解析(读取、写入)CSV 文件的操作方法
Dec 24 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
PR值查询 | PageRank 查询
2006/12/20 PHP
PHP 日期时间函数的高级应用技巧
2009/10/10 PHP
php checkbox 取值详细说明
2010/08/19 PHP
解析php安全性问题中的:Null 字符问题
2013/06/21 PHP
ThinkPHP令牌验证实例
2014/06/18 PHP
php添加数据到xml文件的简单例子
2016/09/08 PHP
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
在textarea中显示html页面的javascript代码
2007/04/20 Javascript
JavaScript 对话框和状态栏使用说明
2009/10/25 Javascript
jquery用get实现ajax在ie里面刷新不进入后台解决方法
2013/08/12 Javascript
Javascript加载速度慢的解决方案
2014/03/11 Javascript
js字符串操作方法实例分析
2015/05/06 Javascript
微信小程序 教程之模块化
2016/10/17 Javascript
详解Angular的数据显示优化处理
2016/12/26 Javascript
Vue.2.0.5过渡效果使用技巧
2017/03/16 Javascript
jQuery为某个div加入行样式
2017/06/09 jQuery
vue中过滤器filter的讲解
2019/01/21 Javascript
Python实现的检测网站挂马程序
2014/11/30 Python
在Python中使用swapCase()方法转换大小写的教程
2015/05/20 Python
全面了解python字符串和字典
2016/07/07 Python
Python错误: SyntaxError: Non-ASCII character解决办法
2017/06/08 Python
python3实现公众号每日定时发送日报和图片
2018/02/24 Python
python flask中静态文件的管理方法
2018/03/20 Python
基于python生成器封装的协程类
2019/03/20 Python
Python3.5 Pandas模块之DataFrame用法实例分析
2019/04/23 Python
python3实现elasticsearch批量更新数据
2019/12/03 Python
python next()和iter()函数原理解析
2020/02/07 Python
CSS3中animation实现流光按钮效果
2020/12/21 HTML / CSS
Omio美国:全欧洲低价大巴、火车和航班搜索和比价
2017/11/08 全球购物
丝芙兰香港官网:Sephora香港
2018/03/13 全球购物
Shopee菲律宾:在线购买和出售
2019/11/25 全球购物
会计学应届毕业生推荐信
2013/11/04 职场文书
交通志愿者活动总结
2014/06/27 职场文书
影视广告专业求职信
2014/09/02 职场文书
Python基础之元类详解
2021/04/29 Python
分享几种python 变量合并方法
2022/03/20 Python