zoukankan      html  css  js  c++  java
  • 常用模块2

    一 .hashlib模块

      1.对摘要算法的认识

        (1).摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。

        (2).对于同一个字符串,不管这个字符串长度多长,只要相同的,无论在任何环境下多次执行,在任何语言中使用相同的算法,相同的手段得到的结果都是相同的,只要不是相同的字符串,得到的结果一定不同

      2.摘要算法MD5

        (1)hashlib.md5

        (2)md5的计算速度很快,生成的是一个32位的十六进制字符.

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

    md5
    import hashlib
    a = hashlib.md5()
    a.update(a.encode("utf-8"))
    ret = a.hexdigest()
    print(ret)

        (4)由于常用口令的MD5值很容易被计算出来,所以,要确保存储的用户口令不是那些已经被计算出来的常用口令的MD5,这一方法通过对原始口令加一个复杂字符串来实现,俗称“加盐”

    加盐
    import hashlib
    a = hashlib.md5("123".encode("utf-8"))
    a.update("456789qwer".encode("utf-8"))
    ret = a.hexdigest()
    print(ret)
    
    
    动态加盐
    username = input('username : ')
    passwd = input('password : ')
    md5obj = hashlib.md5(username.encode('utf-8'))
    md5obj.update(passwd.encode('utf-8'))
    print(md5obj.hexdigest())
    ee838c58e5bb3c9e687065edd0ec454f
    View Code

     3.摘要算法 sha1

        (1)hashlib.sha1

        (2)hashlib计算速度较慢,但是过程复杂,更安全. 生成的是一个40位的十六进制字符.

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

    sha1
    import hashlib
    a = hashlib.sha1()
    a.update("15234".encode("utf-8"))#1270f53049a7a5276019a7f931772c886fac6294
    a.update("rewy".encode("utf-8"))
    ret = a.hexdigest()
    print(ret)

        

  • 相关阅读:
    python中文编码
    Python习题纠错1
    Python中的变量
    Python之注释
    python初步学习
    java输入数据并排序
    五月最后一天
    @component注解
    多线程回顾
    赖床分子想改变--
  • 原文地址:https://www.cnblogs.com/hu13/p/9450675.html
Copyright © 2011-2022 走看看