• hashlib模块


    hashlib:封装了一些用于加密的类

    常用加密算法:md5:文件校验,比如已知道服务器上的安装包的sha值,在本地检测下载好的文件的sha值是否一致

           sha系列:金融类,安全类,对安全性要求较高的企业。随着sha系列数字越高,加密越复杂,越不容易破解,但是耗时越长

    特点:1.把一个大的数据,切分成不同块,分别对不同的块进行加密,

    再汇总的结果和直接对整体数据加密的结果是一致的

          2.单向加密,不可逆

       3.原始数据的一点小的变化,将导致结果的非常大的差异,即'雪崩效应'

    加密算法的基本步骤:

       1.获取一个加密对象

       2.使用加密对象的update方法,进行加密,update方法可以调用多次

       3.通常通过hexdigest方法获取加密结果

    验证个数据两次加密的结果对比,

    如果结果相同,说明数据相同

    MD5算法代码展示

    import hashlib
    
    
    # 1.获取一个加密对象(可以直接在参数中添加数据对象而不需要使用update,结果是一样的)
    m = hashlib.md5()
    # 2.使用加密对象的update,对转换成bytes的数据类型进行加密
    m.update(b'abc')
    # 3.通过hexdigest获取加密结果
    res = m.hexdigest()
    print(res, len(res))

    sha系列算法代码展示

    s = hashlib.sha224()
    s.update(b'abc')
    print(s.hexdigest(), len(s.hexdigest())) # 不同的加密算法,实际上是加密结果长度的不同

    必要时我们需要使加密过程更复杂化,这里就涉及到了一个概念‘加盐’

    import hashlib
    
    
    s = 'Python'
    m = hashlib.md5('sault'.encode('utf-8'))  # 这里的盐我用sault指代,可以任意指定
    
    # 原数据拆分成不同的块,分块加密,最后的加密结果是一致的
    m.update('Py'.encode('utf-8'))
    m.update('thon'.encode('utf-8'))
    print(m.hexdigest())

    s1 = 'happiness' m = hashlib.md5('sault'[::2].encode('utf-8')) # 这里我对某个数据类型进行切片,使'盐'更动态化 m.update(s1.encode('utf-8')) print(m.hexdigest())
  • 相关阅读:
    编程之美---求数组中最长递增子序列
    编程之美----子数组的最大乘积
    编程之美----寻找数组中的最大值和最小值
    编程之美---找符合条件的整数
    编程之美----最大公约数问题
    编程之美----1的数目
    编程之美----寻找发帖“水王”
    C语言 |= &= 位运算
    整型数类型定义
    extern使用方法总结!(转)
  • 原文地址:https://www.cnblogs.com/GOD-L/p/13527354.html
Copyright © 2020-2023  润新知