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中replace方法实例分析
Aug 20 Python
Python Web框架Flask中使用新浪SAE云存储实例
Feb 08 Python
详细介绍Python中的偏函数
Apr 27 Python
Python使用matplotlib填充图形指定区域代码示例
Jan 16 Python
Python断言assert的用法代码解析
Feb 03 Python
在python中实现将一张图片剪切成四份的方法
Dec 05 Python
pandas计数 value_counts()的使用
Jun 24 Python
详解python中的数据类型和控制流
Aug 08 Python
Python流程控制 while循环实现解析
Sep 02 Python
使用python创建Excel工作簿及工作表过程图解
May 27 Python
Python爬虫之Selenium中frame/iframe表单嵌套页面
Dec 04 Python
Python爬取某平台短视频的方法
Feb 08 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请求Socket接口测试实例
2016/08/12 PHP
PHP面向对象程序设计之命名空间与自动加载类详解
2016/12/02 PHP
Laravel实现autoload方法详解
2017/05/07 PHP
JavaScript高级程序设计 读书笔记之十一 内置对象Global
2012/03/07 Javascript
jQuery 插件仿百度搜索框智能提示(带Value值)
2013/01/22 Javascript
Jquery EasyUI中弹出确认对话框以及加载效果示例代码
2014/02/13 Javascript
js模拟C#中List的简单实例
2014/03/06 Javascript
Javascript中数组sort和reverse用法分析
2014/12/30 Javascript
深入探究使JavaScript动画流畅的一些方法
2015/06/30 Javascript
JS中setTimeout的巧妙用法前端函数节流
2016/03/24 Javascript
AngularJS基础 ng-mousemove 指令简单示例
2016/08/02 Javascript
Vue.js系列之项目搭建(1)
2017/01/03 Javascript
JavaScript实现网页头部进度条刷新
2017/04/16 Javascript
React 子组件向父组件传值的方法
2017/07/24 Javascript
vue脚手架搭建项目的兼容性配置详解
2018/07/17 Javascript
[00:02]DOTA2新版本使用PA至宝后暴击展示
2014/11/19 DOTA
[03:08]TI9战队档案 - Vici Gaming
2019/08/20 DOTA
介绍Python中的文档测试模块
2015/04/28 Python
Mac 上切换Python多版本
2017/06/17 Python
tensorflow中next_batch的具体使用
2018/02/02 Python
python3.7.0的安装步骤
2018/08/27 Python
python图片二值化提高识别率代码实例
2019/08/24 Python
Python单元测试模块doctest的具体使用
2020/02/10 Python
详解用Python爬虫获取百度企业信用中企业基本信息
2020/07/02 Python
浅谈html5之sse服务器发送事件EventSource介绍
2017/08/28 HTML / CSS
英国定做窗帘和纺织品面料一站式商店:Dekoria
2018/08/29 全球购物
应届毕业生求职信范文分享
2013/12/26 职场文书
秋季运动会通讯稿
2014/01/24 职场文书
将相和教学反思
2014/02/04 职场文书
安全生产先进个人材料
2014/02/06 职场文书
淘宝客服专员岗位职责
2014/04/11 职场文书
“九一八事变纪念日”国旗下讲话稿
2014/09/14 职场文书
2014年志愿者工作总结
2014/11/20 职场文书
2014年电信员工工作总结
2014/12/19 职场文书
安全教育主题班会教案
2015/08/12 职场文书
2016年小学生新年寄语
2015/08/18 职场文书