zoukankan      html  css  js  c++  java
  • python-26 hashlib 模块

    1. 介绍hashlib
      hashlib 是一个提供了一些流行的hash算法的 Python 标准库.其中所包括的算法有 md5, sha1, sha224, sha256, sha384, sha512. 另外,模块中所定义的 new(name, string=”) 方法可通过指定系统所支持的hash算法来构造相应的hash对象.

    常用的属性和方法:

    algorithms:列出所有加密算法('md5','sha1','sha224','sha256','sha384','sha512')

    digesti_size:产生的散列的字节大小

    md5()/sha1():创建一个md5或者sha1加密模式的hash对象

    update(arg):用字符串参数来更新hash对象,如果同一个has对象重复调用该方法,如下:m.update(a); m.update(b),则等于m.update(a+b)

    digest():返回摘要,作为二进制数据字符串值

    hexdigest():返回摘要,作为十六进制数据字符串值

    copy():复制

    2. hashlib的使用

    import hashlib
    s='hello'.encode('utf8')  # 字符串存储或传输时需要变成字节流(bytes,或二进制文本),通过encode(编码)方法实现, 编码方式可选,一般用utf-8编码
    ss=bytes('hello',encoding='utf8') #也可以通过bytes方法,直接转化
    print(type(s),s,s.decode('utf8'))
    #-------方法一:
    obj=hashlib.md5()
    obj.update('hello'.encode('utf8'))
    print(obj.hexdigest())          #生成32位16进制数字
    #------方法二:
    obj=hashlib.md5('hello'.encode('utf8'))    #方法二是方法一的简写形式,可以不用调用update()函数
    print(obj.hexdigest())
    #--------方法三
    obj=hashlib.md5('zzg'.encode('utf8'))     #参数表示加盐,也要转化为bytes类型,也可以不加盐
    obj.update('hello'.encode('utf8'))
    print(obj.hexdigest())
    #--------方法四
    obb=hashlib.md5()
    obb.update('zzg'.encode('utf8'))
    obb.update('hello'.encode('utf8'))
    print(obb.hexdigest())              #分别进行2次update,相当于2段字符串拼接在一起进行1次update
    #--------方法五
    obf=hashlib.md5()           # obf=hashlib.md5('zzghello'.encode('utf8'))  可以将2步合为1步
    obf.update('zzghello'.encode('utf8')) #与加盐效果一样,加盐实质就是字符串拼接,3种方法实为1种方法,效果一样
    print(obf.hexdigest())
    View Code

  • 相关阅读:
    OC面向对象—封装
    设计模式之类关系
    理性:中国别一厢情愿救俄罗斯(转)
    Mockito--完整功能介绍(转)
    从陌陌上市看BAT的移动保卫战(转)
    This exception may occur if matchers are combined with raw values
    RepositoryClassLoader.java
    搭建你的持续集成server
    mysql中怎样查看和删除唯一索引
    Android中Context具体解释 ---- 你所不知道的Context
  • 原文地址:https://www.cnblogs.com/Zhouzg-2018/p/10261867.html
Copyright © 2011-2022 走看看