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中sets模块的用法实例
Sep 30 Python
跟老齐学Python之使用Python查询更新数据库
Nov 25 Python
Python cookbook(字符串与文本)在字符串的开头或结尾处进行文本匹配操作
Apr 20 Python
python写入并获取剪切板内容的实例
May 31 Python
pytorch + visdom CNN处理自建图片数据集的方法
Jun 04 Python
python爬虫之urllib,伪装,超时设置,异常处理的方法
Dec 19 Python
Windows系统下pycharm中的pip换源
Feb 23 Python
python 错误处理 assert详解
Apr 20 Python
Python configparser模块封装及构造配置文件
Aug 07 Python
详解Python3 定义一个跨越多行的字符串的多种方法
Sep 06 Python
python Matplotlib数据可视化(1):简单入门
Sep 30 Python
python中字典增加和删除使用方法
Sep 30 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 strtotime函数详解
2009/12/18 PHP
PHP基于数组实现的分页函数实例
2014/08/20 PHP
ThinkPHP文件上传实例教程
2014/08/22 PHP
php使用google地图应用实例
2014/12/31 PHP
浅谈php自定义错误日志
2015/02/13 PHP
CI框架整合smarty步骤详解
2016/05/19 PHP
php版微信公众号接口实现发红包的方法
2016/10/14 PHP
Yii2框架RESTful API 格式化响应,授权认证和速率限制三部分详解
2016/11/10 PHP
thinkPHP框架对接支付宝即时到账接口回调操作示例
2016/11/14 PHP
php代码调试利器firephp安装与使用方法分析
2018/08/21 PHP
JavaScript TO HTML 转换
2006/06/26 Javascript
jQuery formValidator表单验证插件开源了 含API帮助、源码、示例
2008/08/14 Javascript
关于JQuery($.load)事件的用法和分析
2013/04/09 Javascript
通过JS来动态的修改url,实现对url的增删查改
2014/09/01 Javascript
jQuery对象的selector属性用法实例
2014/12/27 Javascript
JavaScript里实用的原生API汇总
2015/05/14 Javascript
Javascript进制转换实例分析
2015/05/14 Javascript
js实现Form栏显示全格式时间时钟效果代码
2015/08/19 Javascript
JavaScript实现的多个图片广告交替显示效果代码
2015/09/04 Javascript
bootstrap警告框使用方法解析
2017/01/13 Javascript
微信小程序实战之轮播图(3)
2017/04/17 Javascript
基于twbsPagination.js分页插件使用心得(分享)
2017/10/21 Javascript
Node之简单的前后端交互(实例讲解)
2017/11/14 Javascript
详解微信小程序的 request 封装示例
2018/08/21 Javascript
微信公众号平台接口开发 获取access_token过程解析
2019/08/14 Javascript
Vue 实现一个命令式弹窗组件功能
2019/09/25 Javascript
Node.js API详解之 timer模块用法实例分析
2020/05/07 Javascript
Vue+Java 通过websocket实现服务器与客户端双向通信操作
2020/09/22 Javascript
[52:27]2018DOTA2亚洲邀请赛 3.31 小组赛B组 paiN vs Secret
2018/04/01 DOTA
[54:09]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
pytorch中torch.max和Tensor.view函数用法详解
2020/01/03 Python
安装pyecharts1.8.0版本后导入pyecharts模块绘图时报错: “所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 ”的解决方法
2020/08/18 Python
经典c++面试题五
2014/12/17 面试题
护理专业推荐信
2013/11/07 职场文书
物业保安岗位职责
2014/07/02 职场文书
springboot实现string转json json里面带数组
2022/06/16 Java/Android