hashlib模块

hashlib是个专门提供hash算法的库,其支持openssl 库提供的所有算法,包括md5, sha1, sha224, sha256, sha384, sha512,使用非常简单、方便。md5经常用来做用户密码的存储。而sha1则经常用作数字签名

他们的使用模式都是一样的,所以我这里只介绍md5的加解密

  • 使用hashlib.md5()可以创建一个md5对象 ( 也可以使用hashlib.new(‘md5’[, data]) )

    import hashlib
    text = "halib真好用!"
    m = hashlib.new("md5", text.encode('gbk'))
    print(m.hexdigest()) # c6380f31122e5b9ccf60421e3c79b589
    
  • 使用MD5对象.uptate(data)可以添加加密的文本(该文本需要经过编码,企且编码不同可能会造成得到hash值不同),注意多次使用uptate()表示将data叠加,而不是覆盖,比如:m.uptate(a)和m.uptate(b) 等价于 m.update(a+b)

    import hashlib
    text1 = "hashlib"
    text2 = "真好用!"
    m = hashlib.md5()
    m.update(text1.encode('utf-8'))
    m.update(text2.encode('utf-8'))
    print(m.hexdigest()) # c6380f31122e5b9ccf60421e3c79b589
    
  • 使用md5对象.hexdigest()得到hash值

import hashlib
text = "hashlib真好用!"
m = hashlib.md5()
m.update(text.encode('utf-8'))
print(m.hexdigest()) # c6380f31122e5b9ccf60421e3c79b589
  • 加盐:额外给原始数据添加一点自定义的数据,使得生成的消息摘要不同于普通方式计算的摘要。

    比如我下面给密码字符串“password”加上字符串“salt”,这里的“salt”字符串就是所谓的盐,其摘要值必然不等于正常摘要“password”字符串的值。当然这个“salt”具体是什么,完全可以自定义,而且不能告诉他人!千万不要以为加盐就是加个“salt”字符串。

    import hashlib.md5
    md5 = hashlib.md5()
    s = "我是明文" + "我是盐"
    md5.update(s.encode('utf-8'))
    print(md5.hexdigest()) # 'b305cadbb3bce54f3aa59c64fec00dea'
    
  • sha1的使用 (用法都一样)

    import hashlib
    text2 = "我在使用sha1加密"
    print(hashlib.new('sha1', text2.encode("utf-8")).hexdigest()) # fe797d7f4aaf1640781f8ba85e216d11e1db09bd
    k = hashlib.sha1()
    k.update(text2.encode("utf-8"))
    print(k.hexdigest()) # fe797d7f4aaf1640781f8ba85e216d11e1db09bd
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值