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语言的优雅之处
Jul 04 Python
浅析python 中__name__ = '__main__' 的作用
Jul 05 Python
一些常用的Python爬虫技巧汇总
Sep 28 Python
Python 获取当前所在目录的方法详解
Aug 02 Python
Python模拟随机游走图形效果示例
Feb 06 Python
Python中xml和json格式相互转换操作示例
Dec 05 Python
python实现列表的排序方法分享
Jul 01 Python
Python socket非阻塞模块应用示例
Sep 12 Python
Python imutils 填充图片周边为黑色的实现
Jan 19 Python
Python HTTP下载文件并显示下载进度条功能的实现
Apr 02 Python
python使用hdfs3模块对hdfs进行操作详解
Jun 06 Python
Python常遇到的错误和异常
Nov 02 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图像处理类分享
2014/11/18 PHP
Ext grid 添加右击菜单
2009/11/26 Javascript
js监听表单value的修改同步问题,跨浏览器支持
2009/12/31 Javascript
url 编码 js url传参中文乱码解决方案
2010/04/11 Javascript
编写可维护面向对象的JavaScript代码[翻译]
2011/02/12 Javascript
基于jquery点击自以外任意处,关闭自身的代码
2012/02/10 Javascript
JS Pro-深入面向对象的程序设计之继承的详解
2013/05/07 Javascript
Nodejs异步回调的优雅处理方法
2014/09/25 NodeJs
Javascript核心读书有感之语言核心
2015/02/01 Javascript
js中日期的加减法
2015/05/06 Javascript
jQuery+CSS3折叠卡片式下拉列表框实现效果
2015/11/02 Javascript
BootStrap Tooltip插件源码解析
2016/12/27 Javascript
js实现一个猜数字游戏
2017/03/31 Javascript
.net MVC+Bootstrap下使用localResizeIMG上传图片
2017/04/21 Javascript
jQuery中内容过滤器简单用法示例
2018/03/31 jQuery
angularJs中ng-model-options设置数据同步的方法
2018/09/30 Javascript
Vue.js 父子组件通信的十种方式
2018/10/30 Javascript
小程序使用分包的示例代码
2020/03/23 Javascript
JS原形与原型链深入详解
2020/05/09 Javascript
openlayers4实现点动态扩散
2020/08/17 Javascript
Python3指定路径寻找符合匹配模式文件
2015/05/22 Python
Python实现矩阵加法和乘法的方法分析
2017/12/19 Python
python实现朴素贝叶斯分类器
2018/03/28 Python
Python 元组操作总结
2019/09/18 Python
Python Web项目Cherrypy使用方法镜像
2020/11/05 Python
h5网页水印SDK的实现代码示例
2019/02/19 HTML / CSS
Blue Nile台湾:钻石珠宝商,订婚首饰、结婚戒指和精品首饰
2017/11/24 全球购物
英国领先的品牌珠宝和配件供应商:Acotis Jewellery
2018/03/07 全球购物
婚鞋、新娘鞋、礼服鞋、童鞋:Nina Shoes
2019/09/04 全球购物
小学语文教研活动总结
2014/07/01 职场文书
机电系毕业生求职信
2014/07/11 职场文书
园艺专业毕业生求职信
2014/09/02 职场文书
工作证明英文模板
2014/10/21 职场文书
2014年售票员工作总结
2014/11/19 职场文书
pycharm安装深度学习pytorch的d2l包失败问题解决
2022/03/25 Python
简单聊聊Golang中defer预计算参数
2022/03/25 Golang