python的一些加密方法及python 加密模块


Posted in Python onJuly 11, 2019

1base64

Python内置的base64模块可以实现base64、base32、base16、base85、urlsafe_base64的编码解码,python 3.x通常输入输出都是二进制形式,2.x可以是字符串形式。

base64模块的base64编码、解码调用了binascii模块,binascii模块中的b2a_base64()函数用于base64编码,binascii模块中的a2b_base64()函数用于base64解码。

import base64
s = 'hello, world'
base64.b64encode(bytes(s, 'ascii'))
b'aGVsbG8sIHdvcmxk'
base64.b64decode(base64.b64encode(bytes(s, 'ascii')))
b'hello, world'

2.md5

Python2.x中有md5模块,此模块调用了hashlib模块,python3.x已中将md5取掉,直接通过调用hashlib模块来进行md5。Python2.x可以直接使用unicode字符,但3.x中必须使用二进制字节串。

import hashlib
m = hashlib.md5()
m.update(b'hello, world!')
m.hexdigest()
'3adbbad1791fbae3ec908894c4963870'

3.sha1

类似于MD5

import hashlib
m = hashlib.sha1()
m.update(b'hello, world!')
m.hexdigest()
'1f09d30c707d53f3d16c530dd73d70a6ce7596a9'

4.crc32

计算指定内容的crc32校验值,可以用zlib以及binascii模块的crc32函数.

import zlib
import binascii
s = b'hello, world!'
zlib.crc32(s)
1486392595
binascii.crc32(s)
1486392595

ps:下面看下Python之加密模块

hashlib模块

•加密方式以md5方式加密举例
•是标准模块,直接导入即可
•还有其他的加密方式,比如:.sha1()、.sha224()、.sha256()等,加密后的字符串长度更长,安全性更高

一、加密步骤

1、字符串先转成二进制类型

使用.encode()方法转成二进制类型

import hashlib
password='123456'
print(password.encode())#字符串不能直接加密,要先转成二进制类型的才可以加密
#结果为:b'123456'

2、使用加密方法

使用.hexdigest()方法输出加密后内容

import hashlib
password='123456'
m=hashlib.md5(password.encode()) #先转成二进制,再加密
#print(dir(m)) #由于这个加密模块pycharm提供不了提示方法,所以如果想知道都有什么方法,可以使用内置函数dir(),使用这条语句就能打印出所有方法了
print(m.hexdigest())

3、打印加密后的内容

使用dir()内置函数显示该变量的所有方法

由于该模块pycharm无法提供提示方法,即输入m“.”不出来方法,所以可以使用内置函数dir(),将所有方法打印出来。

#print(dir(m)) #由于这个加密模块pycharm提供不了提示方法,所以如果想知道都有什么方法,可以使用内置函数dir(),使用这条语句就能打印出所有方法了
print(m.hexdigest())

二、加密相关

1、检验加密结果

•由于md5方式加密完的字符串无论原字符串有多长都是32位,因此可以使用len()方法检验是否加密成功:

print(len(m.hexdigest())

2、md5加密之后是不可逆的
•网络上可以解密的原理是撞库,即:将常用的密码加密完存在数据库里,然后直接搜库。

如果输入的加密后密码碰巧数据库里有,就能把对应的加密前密码返回给你,并不是真正的解密。

3、其他的加密方式

本文的加密方式以md5方式加密举例,还有其他的加密方式,比如:.sha1()、.sha224()、.sha256()等,加密后的字符串长度更长,安全性更高。

m=hashlib.sha1(password.encode())#不同的加密方式
m=hashlib.sha224(password.encode()) #不同的加密方式
m=hashlib.sha256(password.encode()) #不同的加密方式

三、加盐

 原理:

如果要对password=123456加密,这个明文密码太简单,容易撞库解密,所以在123456之后随机加一个字符串,比如abc,这样实际是对123456abc进行加密,如果不知道abc这个字符串,反解的可能性降低,安全性更高。这样的一个字符串就叫做盐。

四、实际应用

#实现加密:传入一个值,如果有盐值,则加盐加密;否则直接加密
def my_md5(s:str,salt=None):
  s=str(s)
  if salt:
    s=s+salt
  m=hashlib.md5(s.encode())
  return m.hexdigest()

总结

以上所述是小编给大家介绍的python的一些加密方法及python 加密模块 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
python flask 多对多表查询功能
Jun 25 Python
python下10个简单实例代码
Nov 15 Python
Python有序查找算法之二分法实例分析
Dec 11 Python
用 Python 连接 MySQL 的几种方式详解
Apr 04 Python
Python八大常见排序算法定义、实现及时间消耗效率分析
Apr 27 Python
用Pycharm实现鼠标滚轮控制字体大小的方法
Jan 15 Python
python GUI库图形界面开发之PyQt5表单布局控件QFormLayout详细使用方法与实例
Mar 06 Python
django修改models重建数据库的操作
Mar 31 Python
python 实现ping测试延迟的两种方法
Dec 10 Python
python基于pexpect库自动获取日志信息
Feb 01 Python
python爬虫智能翻页批量下载文件的实例详解
Feb 02 Python
Python如何telnet到网络设备
Feb 18 Python
kali中python版本的切换方法
Jul 11 #Python
python按比例随机切分数据的实现
Jul 11 #Python
Kali Linux安装ipython2 和 ipython3的方法
Jul 11 #Python
Python循环结构的应用场景详解
Jul 11 #Python
python列表,字典,元组简单用法示例
Jul 11 #Python
python实现数据分析与建模
Jul 11 #Python
新手如何发布Python项目开源包过程详解
Jul 11 #Python
You might like
在线竞拍系统的PHP实现框架(一)
2006/10/09 PHP
自己写了一个php检测文件编码的函数
2014/04/21 PHP
浅析PHP中Session可能会引起并发问题
2015/07/23 PHP
CentOS下搭建PHP环境与WordPress博客程序的全流程总结
2016/05/07 PHP
php基于PDO实现功能强大的MYSQL封装类实例
2017/02/27 PHP
JS中判断null、undefined与NaN的方法
2014/03/26 Javascript
分享一则JavaScript滚动条插件源码
2015/03/03 Javascript
javascript作用域、作用域链(菜鸟必看)
2016/06/16 Javascript
关于JavaScript限制字数的输入框的那些事
2016/08/14 Javascript
js 颜色选择插件
2017/01/23 Javascript
用Webpack构建Vue项目的实践
2017/11/07 Javascript
利用three.js画一个3D立体的正方体示例代码
2017/11/19 Javascript
解决JavaScript中0.1+0.2不等于0.3问题
2018/10/23 Javascript
如何为你的JS项目添加智能提示与类型检查详解
2019/03/12 Javascript
js生成1到100的随机数最简单的实现方法
2020/02/07 Javascript
vue-calendar-component 封装多日期选择组件的实例代码
2020/12/04 Vue.js
Vue+penlayers实现多边形绘制及展示
2020/12/24 Vue.js
浅要分析Python程序与C程序的结合使用
2015/04/07 Python
Python用list或dict字段模式读取文件的方法
2017/01/10 Python
Python实现Kmeans聚类算法
2020/06/10 Python
Python中pillow知识点学习
2018/04/30 Python
Tensorflow 实现修改张量特定元素的值方法
2018/07/30 Python
python将.ppm格式图片转换成.jpg格式文件的方法
2018/10/27 Python
django项目登录中使用图片验证码的实现方法
2019/08/15 Python
Python 日期的转换及计算的具体使用详解
2020/01/16 Python
python十进制转二进制的详解
2020/02/07 Python
Python字典添加,删除,查询等相关操作方法详解
2020/02/07 Python
Django数据库迁移常见使用方法
2020/11/12 Python
mysql的最长数据库名,表名,字段名可以是多长
2014/04/21 面试题
销售人员自我评价怎么写
2013/09/19 职场文书
骨干教师培训感言
2014/01/16 职场文书
2014年军人思想汇报范文
2014/10/12 职场文书
意向协议书
2015/01/27 职场文书
公司地址变更通知
2015/04/25 职场文书
原生JS封装vue Tab切换效果
2021/04/28 Vue.js
MySQL下载安装配置详细教程 附下载资源
2022/09/23 MySQL