博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python模块——hashlib
阅读量:6715 次
发布时间:2019-06-25

本文共 1543 字,大约阅读时间需要 5 分钟。

简介

hashlib模块是用于对字符串进行加密,其可以把任意长度的数据转换为一个长度固定的数据串,且这种加密是不可逆的,故这种加密方式的安全性都很高。hash本质是一个函数,该模块提供了许多不同的加密算法,可查看其属性algorithms_guaranteed来获取,包括md5, sha1, sha224, sha256, sha384, sha512,使用非常简单、方便。该模块由python自带,故不需要自己安装。其中md5算法多用于对密码的加密,而sha1加密后的长度比md5更长,故安全性更高,但相应的运算速度就会变慢.

常用方法

  • 数据加密:有两种方式,推荐使用第二种,因为这种加密算法直接hashlib点出来即可。
import hashlibpassword = '18779385769wl'.encode()result1 = hashlib.new('md5',password)result2  = hashlib.md5(password)print(result1)print(result2)

可以看出,打印结果并不能得到加密后的数据,只是给出了其内存地址而已,hashlib给了专门的方法来获取加密的数据。在加密前给的密码我们记得要先编码为utf8.

  • 获取加密后的数据:有两种方式,第一种以二进制形式返回,第二种以十六进制返回。
import hashlibpassword = '18779385769wl'.encode()result1 = hashlib.md5(password)print (result1.digest())print(type(result1.digest()))print (result1.hexdigest())print(type(result1.hexdigest()))
b'\xc6\x9bA\x05\xdaf%$\xf7\xe7\xd9\x1b\x13\xba\xf1\xad'
c69b4105da662524f7e7d91b13baf1ad

这里要讲一个知识点就是加盐salt,它的目的是加大加密的安全性,给一些简易的密码提高被破解的难度,其原理就是再原先密码的基础上再加上一串字符,如下代码所示:

import hashlibsalt = 'qweasd'.encode()password = '18779385769wl'.encode()+saltresult  = hashlib.md5(password)print(result.digest())print(result.hexdigest())
b',\xd9\xc1WE\x02(\xa927\xc1\xe3g\xc0\xfa&'2cd9c157450228a93237c1e367c0fa26
  • 标准给密码加密:该模块给了一个比较全面的方法来给密码加密。
salt = 'qweasd'.encode()password = '18779315769wl'.encode()res = hashlib.pbkdf2_hmac('md5',password,salt,100)#100是迭代次数,更加大了安全性print(res)print(type(res))
b'\x87\xe9\x92\xb2\x10l\x89OG\xc2~\xfe#N~\xf0'

该函数的返回结果就是加密后的数据,故可直接打印出来,这里不能用digest和hexdigest方法。

转载于:https://www.cnblogs.com/longwhite/p/10397708.html

你可能感兴趣的文章
Android官方开发文档Training系列课程中文版:分享简单数据之从其它APP接收简单数据...
查看>>
OpenSSL将于9月22日发布多个漏洞补丁
查看>>
大数据助推新型智库建设
查看>>
新加坡欲重组通信和媒体管制机构
查看>>
《CCNP ROUTE 300-101学习指南》——2.2节构建EIGRP拓扑表
查看>>
Libreboot 项目向开源社区示好和致歉
查看>>
Linux Kernel 4.9-rc8,4.9 分支最后一个候选版
查看>>
《Web异步与实时交互——iframe AJAX WebSocket开发实战》—— 2.2 相关关键技术及工作原理...
查看>>
《Nmap渗透测试指南》—第1章1.5节Mac OS安
查看>>
学习和使用 PHP 应该注意的10件事
查看>>
.NET Framework 源码
查看>>
centos上一键安装jdk、tomcat脚本
查看>>
ArrayList源码分析
查看>>
JS Object的静态方法汇总( 上 )
查看>>
jvm疯狂吞占内存,罪魁祸首是谁?
查看>>
sql server随机函数
查看>>
优朋普乐:OTT正重构电视版图
查看>>
Ubuntu 14.04 LTC 有线网络——网线不识别,灯不亮问题
查看>>
21_css布局2_浮动布局.html
查看>>
DateUtils 单元下的公用函数目录
查看>>