简介

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

常用方法

  • 数据加密:有两种方式,推荐使用第二种,因为这种加密算法直接hashlib点出来即可。
import hashlib

password = '18779385769wl'.encode()
result1 = hashlib.new('md5',password)
result2 = hashlib.md5(password)
print(result1)
print(result2)
<md5 HASH object @ 0xb71a6598>
<md5 HASH object @ 0xb71a6700>

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

  • 获取加密后的数据:有两种方式,第一种以二进制形式返回,第二种以十六进制返回。
import hashlib

password = '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'
<class 'bytes'>
c69b4105da662524f7e7d91b13baf1ad
<class 'str'>

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

import hashlib
salt = 'qweasd'.encode()
password = '18779385769wl'.encode()+salt
result = 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'
<class 'bytes'>

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

Python模块——hashlib的更多相关文章

  1. Python模块——HashLib与base64

    摘要算法(hashlib) Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度 ...

  2. python模块: hashlib模块, configparse模块, logging模块,collections模块

    一. hashlib模块 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用 ...

  3. Python模块——HashLib(摘要算法)与base64

    摘要算法(hashlib) Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度 ...

  4. Python模块hashlib

    Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制 ...

  5. python模块——hashlib模块(简单文件摘要算法实现)

    #!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = "loki" # Usage: hashlib模块 import ...

  6. python模块hashlib & hmac

    Hash,译做“散列”,也有直接音译为“哈希”的.把任意长度的输入,通过某种hash算法,变换成固定长度的输出,该输出就是散列值,也称摘要值.该算法就是哈希函数,也称摘要函数. MD5是最常见的摘要算 ...

  7. python模块hashlib、xlwt、pymysql

    一.xlwt xlwt是python第三方模块,主要是对excel的写操作.xlwt使用时必须先安装. 1.安装 在操作系统的cmd窗口输入pip install xlwt回车即可在线安装. 安装完成 ...

  8. python模块--hashlib

    用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法 import hashlib m = hashlib.m ...

  9. python 模块 hashlib(提供多个不同的加密算法)

    hashlib是涉及安全散列和消息摘要,提供多个不同的加密算法借口,如SHA1.SHA224.SHA256.SHA384.SHA512.MD5等. import hashlib m = hashlib ...

随机推荐

  1. Tornado中的Cookie设置

    Tornado中的cookie分为两种--普通cookie和安全cookie 普通cookie 1.创建cookie 原型 self.set_cookie(name, value, domain=No ...

  2. 【Android】家庭记账本手机版开发报告三

    一.说在前面 昨天 对第一天的框架结构进行了四方面的完善 今天 对界面显示和逻辑结构进行完善 问题 无 二.界面展示完善 1.使用可回收的列表recyclerView展示账单的信息,并设置数据项为卡片 ...

  3. DuplicateHandle 伪句柄 与 实句柄的应用

    如果把GetCurrentThread()返回值传递给一个HANDLE句柄,用它进行ResumeThread,结果肯定不是我们想要的.下面的例子详细描述了伪句柄的调用结果: #include &quo ...

  4. 【机器学习实战学习笔记(1-2)】k-近邻算法应用实例python代码

    文章目录 1.改进约会网站匹配效果 1.1 准备数据:从文本文件中解析数据 1.2 分析数据:使用Matplotlib创建散点图 1.3 准备数据:归一化特征 1.4 测试算法:作为完整程序验证分类器 ...

  5. linux文件编辑VI命令详解

    vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令.由于对Unix及Linux系统的任何版本,vi编辑器是完全相 ...

  6. VUE学习(一)——使用npm安装项目

    npm是node.js自带的功能 Node.js 安装配置 本章节我们将向大家介绍在 Windows 和 Linux 上安装 Node.js 的方法. 本安装教程以 Node.js v4.4.3 LT ...

  7. HDU 5428:The Factor

    The Factor  Accepts: 101  Submissions: 811  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 65 ...

  8. P3241 [HNOI2015]开店

    题解:动态点分治 建立点分树 每个点维护点分树子树内节点到这个节点和父亲节点距离的前缀和 二分查找锁定合法区间 对每个祖先分治中心查询路径和然后减去不合法子树内的路径和 注意:求大量LCA时用树剖 不 ...

  9. 从 relu 的多种实现来看 torch.nn 与 torch.nn.functional 的区别与联系

    从 relu 的多种实现来看 torch.nn 与 torch.nn.functional 的区别与联系 relu多种实现之间的关系 relu 函数在 pytorch 中总共有 3 次出现: torc ...

  10. npm全局权限设置 - Mac

    网络上的常见方法 目前网络上常见的方法都是修改npm安装路径的权限 通过使用命令 npm config get prefix 得到npm的路径,结果大部分都是/usr/local.然后,很多方法都会要 ...