zoukankan      html  css  js  c++  java
  • 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())
  • 相关阅读:
    Sql Server--如何自动备份数据
    Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Chinese_PRC_CI_AI" in the equal to operation.
    GET方法和POST方法的区别,Get方法到底可传递的字符串的最大长度是多少?
    Specialization For SCCM
    Fullscreen API:全屏操作
    How to enable remote connections to SQL Server
    Advanced Installer
    ajax跨域请求webservice webconfig配置
    SharePoint Resize app
    Sharepoint 开启App 配置App
  • 原文地址:https://www.cnblogs.com/GOD-L/p/13527354.html
Copyright © 2011-2022 走看看