开发者

Python hashlib模块详情

开发者 https://www.devze.com 2022-12-05 13:42 出处:网络 作者: 盆友圈的小可爱
目录1. hashlib 模块概述1.1hashlib 模块特点1.2hashlib 模块使用步骤2. hashlib 工作原理2.1hash 算法特点2.2hash 构造方法2.3hash 算法过程2.4hash 常用算法3. hashlib 属性方法4. 实操5、总结前言:
目录
  • 1. hashlib 模块概述
    • 1.1hashlib 模块特点
    • 1.2hashlib 模块使用步骤
  • 2. hashlib 工作原理
    • 2.1hash 算法特点
    • 2.2hash 构造方法
    • 2.3hash 算法过程
    • 2.4hash 常用算法
  • 3. hashlib 属性方法
    • 4. 实操
      • 5、总结

        前言:

        在互联网的时代,我们在网络中传输过程中都是要经过加密的,常见网络数据传输的加密方式有MD5RSA算法。当然,加密算法还有很多中按加密、解密方式不同分为:对称加密非对称加密hash加密。其中MD5算法的基础是使用的hash算法,针对不同安全的hash安全算法,python也提一个通用接口hashlib模块。

        1. hashlib 模块概述

        hashlibPython 内置用于对安全哈希和消息摘要的通用接口模块。hashlib 模块支持提供目前主流hash算法如MD5SHA-1SHA-2SHA-256等通用构造方法,并且返回带有同样接口的hash对象。

        1.1hashlib 模块特点

        • 提供主流的hash算法操作,替代md5模块和sha模块
        • 模块调用简单,无需下载安装
        • 主要应用在文本加密场景如用户登录认证

        1.2hashlib 模块使用步骤

        • 导入hashlib库import hashlib
        • 建立加密对象
        • 对字符串进行加密处理
        • 获取转换成新的N个Bit

        Python hashlib模块详情

        2. hashlib 工作原理

        hashlib 模块中加密方式是我们常见的hash算法。hash算法又称为散列表(hash table),也叫做哈希表。

        2.1hash 算法特点

        • 具有唯一确定性,不同字符串加密后都是不一样的
        • 不可逆性,hash只有加密没有解密过程
        • 散列碰撞,输出和输入值不是一一对应关系

        2.2hash 构造方法

        直接定址方法

        • 公式一:hash(key) = key
        • 公式二:hash(key) = a*key+b
        • 我们可以查看到直接定址方法具有线性的特点,因此适用在关键字分布连续的情况

        数学分析方法

        • 方式:提取关键字中随机性好的数字位,将其拼接为哈希地址
        • 适用场景:关键字已知的情况下,对关键字中每一位进行取值情况分析

        除留余数方法

        • 公式hash(key) = key % p
        • 除数采用取余模运算

        2.3hash 算法过程

        • hash 函数接收到输入的字符串,首先会先进行预处理-哈希计算-输入摘要
        • 预处理:将字符串进行填充、分割N块,为hash进行初始化
        • 哈希计算:将预处理的数据完成指定算法生成消息摘要
        • 每指定一种hash算法只会生成固定长度的摘要,长度越长的安全性越高

        Python hashlib模块详情

        2.4hash 常用算法

        MD5

        MD5:message-Digest Algorithm 5 信息-摘要算法5,该算法用于信息完整性进行校验

        • 计算方式:求余、取余、调整长度、进行链接变量循环运算求出结果
        • 用途:主要用于文件校验

        SHA-1

        SHA:secure Hash Algorithm 安全散列算法1,是一种密码散列算法,SHA-1可以生成www.cppcns.com摘要消息为40位的16进制即160位(20字节)的散列值

        • 用途:TSL、SSL、PGP、SSH等协议中广泛使用

        3. hashttp://www.cppcns.comhlib 属性方法

        hashlib 模块相关属性

        属性 作用
        hashlib.algorithms_guaranteed 保证所有平台上都支持哈希算法的名称
        hashlib.algorithms_available 保证平台上运行的Python解释器上可用的hash算法的名称

        hashlib 构造对象相关的属性

        属性 作用
        hash.digest_size 以字节表示哈希对象的大小
        hash.block_size 以字节表示哈希算法的内部块大小
        hash.name 哈希对象的名称

        hashlib 模块相关方法目前可以支持主流hash算法。

        编程客栈http://www.cppcns.com
        方法 作用
        hashlib.pbkdf2_hmac(hash_name,password,salt,itera,dklen=None) PKCS#5基于密码的秘钥派生函数2,作为HMAC作为伪随机函数
        hashlib.scrypt(password,*,salt) 基于密码加密的秘钥派生函数
        hashlib.md5() md5加密方式
        hashlib.sha1 sha1加密方式
        hashlib.sha256 sha256加密方式
        hashlib.blake2b () blake2b加密方式
        hashlib.blake2s black2s加密方式

        hashlib 构造对象相关的方法

        方法 作用
        hash.update(data) 以字节表示哈希对象
        hash.digest() 返回当前已传给update()方法的数据摘要
        hash.hexdigest() 以16进制的字符串表示哈希数据值
        hash.copy() 将hash对象复制,共享初始数据的摘要

        4. 实操

        我们学习hashlib模块中对字符串进行hash算法处理,我们来实操一下吧

        import hashlib
        
        text_md5 = hashlib.md5()
        
        text_md5.update(bytes("hello juejing",encoding="utf-8"))
        
        print("md5:",text_md5.hexdigest())
        
        text_sha1 = hashlib.sha1()
        
        text_sha1.update(bytes("hello juejing",encoding="utf-8"))
        编程客栈
        print("sha1:",text_sha1.hexdigest())
        
        
        
        text_sha256 = hashlib.sha3_256()
        
        text_sha256.update(bytes("hello juejing",encoding="utf-8"))
        
        print("sha256:",text_sha256.hexdigest())
        
        
        
        text_crc32 = hashlib.()
        
        text_sha256.update(bytes("hello juejing",encoding="utf-8"))
        
        print("sha256:",text_sha256.hexdigest())

        Python hashlib模块详情

        0

        精彩评论

        暂无评论...
        验证码 换一张
        取 消

        关注公众号