一 、概述

摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。

摘要算法的特点

  • 不论data大小,摘要结果是固定长度
  • 单向函数,计算data的摘要可以,但不可以通过摘要反推data
  • 摘要算法不是加密算法,不能用以加密,因为不能反推是单向函数,主要用于防篡改

主要用途

  • 密码密文存储
  • 文件一致性验证
import hashlib
md5 = hashlib.md5() # 拿到md5对象
md5.update(bytes('',encoding='utf-8')) # 注意是bytes类型,且注明编码
ret =md5.hexdigest() # 获得md5值
print(ret)

二、用法

  • 使用update更新散列对象时,需要先将字符串转换为bytes类型,注意编码
  • 使用update的时候可以多次update,结果跟一次性得到的摘要是相同的
  • 加盐可以增加安全性,防撞库

对某个字符串一次性进行md5摘要

name = 'wangys'  # 待摘要的字符串
md5 = hashlib.md5() # 通过md5方法拿到一个对象
md5.update(bytes(name,encoding='utf-8')) # 使用update对象
ret = md5.hexdigest() # 使用hexdigest得到摘要值
print(ret)
# ec220befabb67c9052cf4608bb5752f8

对某个字符串多次进行摘要

# 得到的摘要结果一样
name = 'wangys'
md5 = hashlib.md5()
md5.update(bytes(name[:2],encoding='utf-8'))
md5.update(bytes(name[2:],encoding='utf-8'))
ret = md5.hexdigest()
print(ret)
# ec220befabb67c9052cf4608bb5752f8

进行摘要的时候加盐

import  hashlib
name = 'wangys'
md5 = hashlib.md5(bytes('haha',encoding='utf-8')) # 盐为 haha
md5.update(bytes(name,encoding='utf-8'))
print(md5.hexdigest())

Python内置模块之-hashlib的更多相关文章

  1. python 内置模块之hashlib、hmac、uuid

    一.hashlib md5和sha算法通过消息摘要算法生成定长的消息摘要,消息摘要算法是不可逆的.但同一段消息通过摘要算法后得到的值是一样的,可一通过比对消息摘要验证数据的完整性. sha算法比MD5 ...

  2. md5模块(Python内置模块)和hashlib模块

    转自https://my.oschina.net/duhaizhang/blog/67214 MD5模块用于产生消息摘要,康用来判断文件是否相同. python的md5模块使用非常简单,包括以下几个函 ...

  3. Python学习笔记【第八篇】:Python内置模块

    什么时模块 Python中的模块其实就是XXX.py 文件 模块分类 Python内置模块(标准库) 自定义模块 第三方模块 使用方法 import 模块名 form 模块名 import 方法名 说 ...

  4. python内置模块[sys,os,os.path,stat]

    python内置模块[sys,os,os.path,stat] 内置模块是python自带功能,在使用内置模块时,需要遵循 先导入在 使用 一.sys 对象 描述 sys.argv 命令行参数获取,返 ...

  5. python 内置模块续(二)

    目录 python 内置模块补充 1.hashlib模块 简易使用: 高级使用: 进阶使用: 加盐处理: 校验文件一致性 2.logging日志模块 日志等级 常用处理 "四大天王" ...

  6. python内置模块(4)

    这一部分是python内置模块系列的最后一部分,介绍了一些小巧有用的内置模块. 目录: 1.random 2.shelve 3.getpass 4.zipfile 5.tarfile 6.bisect ...

  7. Python内置模块与标准库

    Python内置模块就是标准库(模块)吗?或者说Python的自带string模块是内置模块吗? 答案是:string不是内置模块,它是标准库.也就是说Python内置模块和标准库并不是同一种东西. ...

  8. python之模块hashlib(提供了常见的摘要算法,如MD5,SHA1等等)

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python之模块hashlib(提供了常见的摘要算法,如MD5,SHA1等等) #http://www.c ...

  9. python 模块之hashlib

    Hashlib模块 Python里面的hashlib模块提供了很多加密的算法,这里介绍一下hashlib的简单使用事例,用hashlib的md5算法加密数据,其他的所有加密算法使用方式上基本类似. h ...

随机推荐

  1. 怎么使Richedit中光标始终指到最后一行的最后面?

    Richedit中数据会不断增加.要始终能看到当前的数据.该怎么做? SendMessage(Memo->Handle, WM_VSCROLL, SB_BOTTOM, 0); SendMessa ...

  2. mybatis 中的 update 返回值你真的明白吗

    记录源地址:https://www.jianshu.com/p/80270b93082a

  3. Linux 学习 (七) 挂载命令 & 用户登陆查看

    Linux达人养成计划 I 学习笔记 挂载命令 mount:查询系统中已经挂载的设备 mount -a:根据配置文件 /etc/fstab 的内容,自动挂载 mount [-t 文件系统] [-o 特 ...

  4. 解决mysql中文乱码问题 在url后面添加?characterEncoding=utf8

  5. Vuex、axios、跨域请求处理和import/export的注意问题

    一.Vuex 1.介绍 vuex是一个专门为Vue.js设计的集中式状态管理架构. 对于状态,我们把它理解为在data中需要共享给其他组件使用的部分数据. Vuex和单纯的全局对象有以下不同: 1. ...

  6. poj 1015 Jury Compromise(背包变形dp)

    In Frobnia, a far-away country, the verdicts in court trials are determined by a jury consisting of ...

  7. BSGS与扩展BSGS

    BSGS \(BSGS\)算法又称大步小步\((Baby-Step-Giant-Step)\)算法 \(BSGS\)算法主要用于解以下同余方程 \[A^x\equiv B(mod\ p)\]其中\(( ...

  8. mysql加速导入数据的简单设置

    mysql加速导入数据的简单设置 # 修改前查询参数值 show variables like 'foreign_key_checks'; show variables like 'unique_ch ...

  9. 第四届CCCC团体程序设计天梯赛 后记

    一不小心又翻车了,第二次痛失200分 1.开局7分钟A了L2-3,一看榜已经有七个大兄弟排在前面了,翻车 * 1 2.把L1-3 A了18分,留了两分准备抢顽强拼搏奖,最后五秒钟把题过了,万万没想到还 ...

  10. 2017-12-19python全栈9期第四天第二节之列表的增删查改之公共方法len和count和index

    #!/user/bin/python# -*- coding:utf-8 -*-li = ['zs','ls','ww','zl','xx']l = len(li) #总数print(l)num = ...