zoukankan      html  css  js  c++  java
  • Python中hashlib模块

    一、什么是Hash
    Hash,译做"散列",也有直接音译为"哈希"的。把任意长度的输入,通过某种hash算法,变换成固定长度的输出(通常用16进制的字符串表示),该输出就是散列值,也称摘要值。该算法就是哈希函数,也称摘要函数。

    二、Hash作用场景

    1.一般用来检验数据是否被篡改,摘要函数是一个单向函数,通过digest的反推出数据非常困难,只要对原数据做一个bit的修改,都会导致计算出不同的摘要。
    2.可以用来检验用户登录,通过摘要算法保存密码的摘要值到数据库,这样有权访问的人也无法获取用户的明文口令。但是黑客会事先计算出各种常用口令的md5值,无需破解,对比数据库md5值就能得到使用常用口令的用户账号,但可以通过加盐salt,经过Salt处理的MD5口令,只要Salt不被黑客知道,即使用户输入简单口令,也很难通过MD5反推明文口令。如果有两个用户用同一个口令可以用username + password + salt的方式保证摘要值不一样

    三、hashlib介绍

    hashlib是Python的内置模块,提供了多种安全方便的摘要方法,在大多数平台上支持sha1()、sha224()、sha256()、sha384()、sha512()、blake2b()、sha3_512()、shake_128()、shake_256()、md5(),这些构造方法在使用上通用,返回带有同样接口的hash对象,对算法的选择,差别只在于构造方法的选择。

    四、python中使用hashlib模块

    使用方法:
    import hashlib
    
    第一种方式
    #构建一个md5对象
    x = hashlib.md5()
    #把数据添加到对象里
    x.update('hello'.encode(encoding='utf-8'))
    #返回十六进制str摘要值,通常用于邮件传输或非二进制环境中。通常我们比较摘要时,比较的就是这个值!
    print(x.hexdigest())
    结果:
    5d41402abc4b2a76b9719d911017c592
    
    #返回bytes格式的消息摘要
    print(x.digest())
    结果:
    b']A@*xbcK*vxb9qx9dx91x10x17xc5x92'
    
    
    第二种方式
    hashlib.new(name[data])
    一个通用的构造方法,name是某个算法的字符串名称,data是可选的bytes类型待摘要的数据。
    x = hashlib.new('md5',b'hello')
    print(x.hexdigest())
    结果:
    5d41402abc4b2a76b9719d911017c592
    

      

  • 相关阅读:
    SharePoint 2013 配置我的网站 图文引导
    关于SharePoint REST中的授权的研究
    SharePoint重置密码功能Demo
    SharePoint 沙盒解决方案 VS 场解决方案
    移动设备和SharePoint 2013
    win32
    win32
    链表复习-1
    win32
    洛谷基础算法
  • 原文地址:https://www.cnblogs.com/lucktomato/p/15166498.html
Copyright © 2011-2022 走看看