python加密模块-hashlib模块

发布时间:2019-08-28 09:09:04编辑:auto阅读(1681)

    hashlib模块

    用于加密相关的操作,3.X里代替了md5模块和sha模块,主要提供SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法
    (sha比md5 更复杂、md5 不能反解)
    
    具体应用:用于网站防篡改。具体方法:监控网站被篡改,定时的去wget 去下载,然后md5比对 ,检查网站是否被篡改。

    如何验证md5 呢, 就是在生成一次md5值 比较是否相同。

    具体使用方法:
    
    #导入模块
    import hashlib
    
    生成一个加密的对象并复制给变量
    m = hashlib.md5()
    
    给对象输入加密bytes字符类型
    m.update(b"hello")
    m.update(b"it's me")
    
    打印加密后的md5值,输出二进制hash
    print(m.digest())
    
    打印加密后的md5值,输出十六进制格式hash
    print(m.hexdigest())
    
    查看十六进制格式hash的长度为32
    print(len(m.hexdigest()))

    以下是六种加密方法一一示例:

    # SHA1加密
    sha = hashlib.sha1()
    sha.update("管理员".encode(encoding="utf-8"))
    print(sha.hexdigest())
    
    # SHA224加密
    sha224 = hashlib.sha224()
    sha224.update(b"admin")
    print(sha224.hexdigest())
    
    # SHA256加密
    sha256 = hashlib.sha256()
    sha256.update(b"admin")
    print(sha256.hexdigest())
    
    # SHA384加密
    sha384 = hashlib.sha384()
    sha384.update(b"admin")
    print(sha384.hexdigest())
    
    # SHA512加密
    sha512 = hashlib.sha512()
    sha512.update(b"admin")
    print(sha512.hexdigest())
    
    # MD5加密
    md5 = hashlib.md5()
    md5.update(b"admin")
    print(md5.hexdigest())

    hmac模块

    python还有一个hmac模块,它内部对我们创建key和内容 再进行处理 再加密!
    散列消息鉴别码,简称HMAC,是一种基于消息鉴别码MAC(Message Authentication Code)的鉴别机制。使用HMAC时,消息通讯的双方,通过验证消息中加入的鉴别密钥K来鉴别消息的真伪;
    
    一般用于网络通信中消息加密,前提是双方先要约定好key,就像接头暗号一样,然后消息发送,用key把消息加密,接收方用key + 消息明文再加密,拿加密后的值 跟 发送者的相对比是否相等,这样就能验证消息的真实性,及发送者的合法性了。

    算法表示:

    算法公式 : HMAC(K,M)=H(K⊕opad∣H(K⊕ipad∣M))[1]
    
    H 代表所采用的HASH算法(如SHA-256)
    
    K 代表认证密码
    
    Ko 代表HASH算法的密文
    
    M 代表一个消息输入
    
    B 代表H中所处理的块大小,这个大小是处理块大小,而不是输出hash的大小
    
    如,SHA-1和SHA-256 B = 64
    
    SHA-384和SHA-512 B = 128
    
    L 表示hash的大小
    
    Opad 用0x5c重复B次
    
    Ipad 用0x36重复B次
    
    Apad 用0x878FE1F3重复(L/4)次

    认证流程

    (1) 先由客户端向服务器发出一个验证请求。
    
    (2) 服务器接到此请求后生成一个随机数并通过网络传输给客户端(此为挑战)。
    
    (3) 客户端将收到的随机数提供给ePass,由ePass使用该随机数与存储在ePass中的密钥进行HMAC-MD5运算并得到一个结果作为认证证据传给服务器(此为响应)。
    
    (4) 与此同时,服务器也使用该随机数与存储在服务器数据库中的该客户密钥进行HMAC-MD5运算,如果服务器的运算结果与客户端传回的响应结果相同,则认为客户端是一个合法用户。

    具体使用方法:

    #导入模块
    import hmac
    
    #设置密码和消息 进行加密
    h = hmac.new("哈哈哈".encode(encoding="utf-8"),"你好".encode(encoding="utf-8"))
    
    #打印加密后的字符
    print(h.hexdigest())
    
    更多关于md5,sha1,sha256等介绍的文章看这里https://www.tbs-certificates.co.uk/FAQ/en/sha256.html

关键字

上一篇: python获取服务器信息

下一篇: ospf(h3c)