• 模块>hashlib


    hshlib模块

    相当于对代码进行加密

    • MD5   结果是16位的字节码

    import hashlib
    
    msg = hashlib.md5()         #创建一个md5 的对象
    msg.update("你好呀".encode("utf-8"))     #把需要加密的内容添加给这个对象,
                                            注意:update()内的参数必须是字节,如果不是就encode为字节
    msg = msg.hexdigest()          #加密
    print(msg)
    
    结果:4f65fdb33e0f2bd0de6bd1b41fdea968

    如果数据量很大,可以分块多次调用update(),最后计算的结果是一样的:

    粗略原因是:加密是对每一个字节进行加密,只要需要加密的内容是一致得,无论分多少行,加密一次,那加密结果都是一样的

    import hashlib
    
    md5 = hashlib.md5()
    md5.update('how你好啊,我不好'.encode('utf-8'))
    print(md5.hexdigest())
    # 结果: 3bfa4bfb7b59a59f27c24ebdd89cd13c
    
    

    import hashlib
    md5
    = hashlib.md5() md5.update('how'.encode('utf-8')) md5.update('你好啊,我不好'.encode('utf-8')) print(md5.hexdigest()) # 结果: 3bfa4bfb7b59a59f27c24ebdd89cd13c

        加盐

    # 创建md5对象时在括号内添加内容就叫"加盐",为了提高安全性.同样是字节,需要进行解码
    import hashlib
    
    msg = hashlib.md5(",".encode("utf-8"))   #创建md5对象
    msg.update("你好呀".encode("utf-8"))
    msg = msg.hexdigest()         
    print(msg)
    结果:caaac0ad1f544161e200772008ccd6ba
    • SHA1

    结果40位字节码,更安全,但是加密时间长,运行慢,效率低

    import hashlib
    
    msg = hashlib.sha1(",".encode("utf-8"))  #创建一个sha1对象
    msg.update("你好呀".encode("utf-8"))
    msg = msg.hexdigest()
    print(msg)
    结果:bd9d06b40de7aae7bb66eb2db356805941e882de

    加盐方式与MD5加盐方式相同   

    SHA256    结果64位

    SHA512    结果128位

    越长越安全

  • 相关阅读:
    java中goto语句
    随机产生一个小写字母
    java移位操作符注意的问题
    +号操作符
    类名引用static变量好处
    自己做题的简单的算法
    read()方法读取的是一个字节,为什么返回是int,而不是byte
    一道判断题
    关于继承中静态代码块,构造代码块,构造函数执行顺序
    比较好的Redux和React-Redux学习资料
  • 原文地址:https://www.cnblogs.com/wangxiaoshou/p/10285333.html
Copyright © 2020-2023  润新知