广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python hashlib模块算法
  • 670
分享到

python hashlib模块算法

算法模块python 2023-01-30 22:01:53 670人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

python中的hashlib为我们提供了常见的摘要算法,如MD5、sha1 那么现在问题来了,摘要算法是what? 摘要算法又称哈希算法、散列算法。 它指的是把任意长度的数据data,通过函数f(),转换为一个长度固定的摘要diges

python中的hashlib为我们提供了常见的摘要算法,如MD5、sha1

那么现在问题来了,摘要算法what?

摘要算法又称哈希算法、散列算法。

它指的是把任意长度的数据data,通过函数f(),转换为一个长度固定的摘要digest(通常用16进制的字符串表示),

目的是为了发现原始的数据是否被人篡改过。

摘要算法之所以可以辨别数据是否被人篡改过,就是因为摘要函数是一个单向函数,

想要计算f(data)很容易,但是通过digest反推data却非常困难。

并且,只要是对原始数据做哪怕一点点改动,都会导致计算出的摘要截然不同。

接下来我们以常见的摘要算法MD5为例,

 

#计算出一个字符串的MD5值
import hashlib
md5 = hashlib.md5()
md5.update(b'hello,Python')  #ps:需要转换成b字节或者encode('utf-8')
print(md5.hexdigest())

 

输出结果:

15ac32041ff74c93c1842b152df7519e

 

import hashlib
md5 = hashlib.md5()
md5.update('hello,python'.encode('utf-8'))
print(md5.hexdigest())

输出结果:

15ac32041ff74c93c1842b152df7519e

 

如果数据量很大,可以分块多次调用update(),

一段字符串分成几段摘要和直接进行摘要的结果是相同的

import hashlib
md5 = hashlib.md5()
md5.update(b'hello,')        #原字符串中有逗号的不要忘记了
md5.update(b'python')
print(md5.hexdigest())

输出结果:

15ac32041ff74c93c1842b152df7519e

 

模仿文件校验

import hashlib
def check_md5(filename):
    md5 = hashlib.md5()
    with open(filename,'rb') as f:
        while True:
            content = f.read(2048)    #分段读取,以免占用大段内存
            if content:
                md5.update(content)
            else:
                break
    return md5.hexdigest()
file1 = check_md5('md5_test1')  #我创建的md5_test1中的数据为11112
file2 = check_md5('md5_test2')   #我创建的md5_test2中的数据为11111
print(file1)
print(file2)

输出结果:

afcb7a2f1c158286b48062cd885a9866
b0baee9d279d34fa1dfd71aadb908c3f

 

md5摘要加密传输进来的密码,并动态加盐提高安全

import hashlib
def md5_digest(salt,pwd):
    md5 = hashlib.md5(salt.encode('utf-8'))  #salt,加盐操作,增加安全性,而且还可以对盐进行切片进一步增加安全性如salt[::-1]
    md5.update(pwd.encode('utf-8'))
    return md5.hexdigest()

salt = '盐'
pwd = '123450'
print(md5_digest(salt,pwd))

输出结果:

684d41d1f7512e40a8939fd4fed9518a

 

经过Salt处理的MD5口令,只要Salt不被黑客知道,即使用户输入简单口令,也很难通过MD5反推明文口令。

但是如果有两个用户都使用了相同的简单口令比如123456,在数据库中,将存储两条相同的MD5值,这说明这两个用户的口令是一样的。有没有办法让使用相同口令的用户存储不同的MD5呢?

如果假定用户无法修改登录名,就可以通过把登录名作为Salt的一部分来计算MD5,从而实现相同口令的用户也存储不同的MD5。

摘要算法在很多地方都有广泛的应用。要注意摘要算法不是加密算法,不能用于加密(因为无法通过摘要反推明文),只能用于防篡改,但是它的单向计算特性决定了可以在不存储明文口令的情况下验证用户口令。

 

MD5是最常见的摘要算法,速度很快,生成结果是固定的128 bit字节,通常用一个32位的16进制字符串表示。
另一种常见的摘要算法是SHA1,调用SHA1和调用MD5完全一样,就是将前面的md5改成sha1而己。
SHA1的结果是160 bit字节,通常用一个40位的16进制字符串表示。
比SHA1更安全的算法是SHA256和SHA512,不过越安全的算法越慢,而且摘要长度更长。

 

--结束END--

本文标题: python hashlib模块算法

本文链接: https://www.lsjlt.com/news/179481.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python hashlib模块算法
    python中的hashlib为我们提供了常见的摘要算法,如MD5、sha1 那么现在问题来了,摘要算法是what? 摘要算法又称哈希算法、散列算法。 它指的是把任意长度的数据data,通过函数f(),转换为一个长度固定的摘要diges...
    99+
    2023-01-30
    算法 模块 python
  • python模块——hashlib
    python模块——hashlibhashlib模块是对许多hash函数的一个公共接口new(name, string = '')    执行给定的hash函数来返回一个新的hash对象,使用给定的字符串数据初始化hash对象。如:    ...
    99+
    2023-01-31
    模块 python hashlib
  • python hashlib模块
    hashlib模块:用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法SHA512 安全性最高SHA和MD5 是2种算法,SHA算法比...
    99+
    2023-01-30
    模块 python hashlib
  • python模块之hashlib
    hashlib模块实现了多种安全哈希和信息摘要算法的通用接口,包括FIPS中定义的SHA1, SHA224, SHA256, SHA384, SHA512以及RFC 1321中定义的MD5 注意点:1. adler32及crc32哈希由z...
    99+
    2023-01-31
    模块 python hashlib
  • python加密模块-hashlib模块
    hashlib模块 用于加密相关的操作,3.X里代替了md5模块和sha模块,主要提供SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法 (sha比md5 更复杂、md5 不能反解) 具体应用:用于网站防篡改。具...
    99+
    2023-01-31
    模块 python hashlib
  • python中hashlib模块用法示例
    我们以前介绍过一篇Python加密的文章:Python 加密的实例详解。今天我们看看python中hashlib模块用法示例,具体如下。 hashlib hashlib主要提供字符加密功能,将md5和sh...
    99+
    2022-06-04
    示例 模块 python
  • Python hashlib模块详情
    目录1. hashlib 模块概述1.1hashlib 模块特点1.2hashlib 模块使用步骤2. hashlib 工作原理2.1hash 算法特点2.2hash 构造方法2.3...
    99+
    2022-11-12
  • python hashlib模块学习
    目录 hashlib 模块 破解密码 hmac 模块 1.干嘛用的: 对字符进行加密,其实就是一个自定义的字符编码表,...
    99+
    2023-01-31
    模块 python hashlib
  • Python基础之hashlib模块subprocess模块logging模块
    目录一、hashlib模块基本操作与用法二、subprocess模块简介基本操作与用法三、logging模块简介基本操作与用法一、hashlib模块 什么是哈希模块: hashlib...
    99+
    2022-11-11
  • 常用模块 - hashlib模块
    一、简介 Python的hashlib提供了常见的摘要算法,如MD5、SHA1、SHA224、SHA256、SHA384、SHA512等算法。 什么是摘要算法呢?摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长...
    99+
    2023-01-31
    模块 常用 hashlib
  • Python base64和hashlib模块及用法详解
    目录一、base64模块1、对字符串编解码2、对URL编解码二、hashlib模块1、hashlib模块1.1 常用属性1.2 常用方法1.3 使用步骤2、MD5(消息摘要算法)3、...
    99+
    2023-02-24
    Python base64和hashlib模块 Python base64和hashlib
  • Python hashlib模块详细讲解使用方法
    目录1.hashlib的简介2.hashlib的使用1. 常用属性2. 常用方法3. 使用示例3.hashlib的特点4.实际演示1. 基本演示2. 应用场景案例1.hashlib的...
    99+
    2022-11-13
    Python hashlib模块 Python hashlib
  • Python基础之hashlib模块详解
    一、hashlib简介 什么叫hash: hash是一种算法(不同的hash算法只是复杂度不一样)(3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA5...
    99+
    2022-06-02
    Python hashlib模块 python模块
  • python3--序列化模块,hashlib模块
    内置方法(回顾)__len__    len(obj)的结果依赖于obj.__len__()的结果,计算对象的长度__hash__   hash(obj)的结果依赖于obj.__hash__()的结果,计算对象...
    99+
    2023-01-30
    模块 序列化 hashlib
  • Python hashlib模块与subprocess模块使用详细介绍
    目录1、什么是哈希hash2、hash的用途3、如何用4、subprocess模块1、什么是哈希hash hash一类算法,该算法接受传入的内容,经过运算得到一串hash值 hash...
    99+
    2022-11-11
  • 盘点Python加密解密模块hashlib的7种加密算法(推荐)
    前言 在程序中我们经常可以看到有很多的加密算法,比如说MD5 sha1等,今天我们就来了解下这下加密算法的吧,在了解之前我们需要知道一个模块嘛就是hashlib,他就是目前Pytho...
    99+
    2022-11-12
  • Python base64和hashlib模块如何使用
    本文小编为大家详细介绍“Python base64和hashlib模块如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python base64和hashlib模块如何使用”文章能帮助大家解决疑惑,下面跟着小编的...
    99+
    2023-07-05
  • Python hashlib、hmac模
    Python中的用于加密的函数位于hashlib,hmac模块中,都是内置模块,直接导入即可使用 hashlib模块实现了md5,sha1,sha224,sha256,sha384,sha512等算法,可以通过hashlib.algori...
    99+
    2023-01-31
    Python hashlib hmac
  • Python加密与解密模块hashlib与hmac
    Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等。 摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制...
    99+
    2022-11-11
  • Python的加密模块hashlib与base64怎么使用
    这篇文章主要介绍了Python的加密模块hashlib与base64怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python的加密模块hashlib与base64怎么使用文章都会有所收获,下面我们一起...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作