当前位置: 首页 > 工具软件 > hashlib++ > 使用案例 >

hashlib模块

楚苏燕
2023-12-01

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
    
 类似资料: