首页 > 其他 > 详细

第五章 模块之random 、hashlib、time /datetime

时间:2019-08-08 23:05:31      阅读:117      评论:0      收藏:0      [点我收藏+]

5.2 random 返回随机生成的一个实数

  • random.randint() 返回随机生成的一个实数

    import random   #调用模块
    ?
    def get_random_code(length=6):#变量为6
       data = []
       for i in range(length):#循环6次
           v = random.randint(65,90)#生成65-90之间随机数字
           data.append(chr(v))#将v变为字符追加到data列表中
    ?
       return  ‘‘.join(data)#将列表中元素链接,变为空字符串
    ?
    code = get_random_code()
    print(code)#6位随机字符
  • random.choice 从序列中随机抽选一个函数 验证码,抽奖

    import random
    print(random.choice([1,2,3,4,5]))
  • random.sample 一个奖项多个人

    import random
    print(random.sample([1,2,3,4],3)) # [3, 2, 4]
  • random.uniform 随机小数

    import random
    print(random.uniform(1,5)) # 3.599380534928744
  • random.shuffle 将序列顺序打乱 洗牌

  • random.random()生成0和1之间的随机浮点数float

5.3 hashlib 摘要算法模块 Hmac算法

  • 加密模块。md5/sha

    import hashlib
    md5 = hashlib.sha1(‘盐‘.encode())
    md5.update(b‘str‘)
    print(md5.hexdigest())
    • 两个文件的md5值是相同的

      import hashlib
      ?
      md5 = hashlib.md5()
      #md5.update(‘hello‘.encode())
      #md5.update(‘wusir‘.encode())
      md5.update(‘hello,wusir‘.encode())
      # 46879507bf541e351209c0cd56ac160e
      46879507bf541e351209c0cd56ac160e
      print(md5.hexdigest())

       

    # 将指定的 “字符串” 进行加密
    技术分享图片
     1 import hashlib
     2 ?
     3 def get_md5(data):
     4     obj = hashlib.md5()#md5对象,md5不能反解,但是加密是固定的,就是关系是一一对应,所以有缺陷,可以被对撞出来,如果没有参数,所以md5遵守一个规则,生成同一个对应关系,
     5     #如果加了参数,就是在原先加密的基础上再加密一层,这样的话参数只有自己知道,防止被撞库。
     6     obj.update(data.encode(utf-8))#要对哪个字符串进行加密,就放这里
     7     result = obj.hexdigest()#拿到加密字符串
     8     return result# 返回加密字符串
     9 ?
    10 val = get_md5(123)
    11 print(val)
    View Code
     
    # 应用,用户登录
    技术分享图片
    import hashlib
    USER_LIST = []
    def get_md5(data):
        obj = hashlib.md5("12:;4436ff123ad".encode(utf-8))
        obj.update(data.encode(utf-8))
        result = obj.hexdigest()
        return result
    ?
    def register():
        print(**************用户注册**************)#提示
        while True:#循环注册
            user = input(请输入用户名:)#输入
            if user == N:#判断输入是否为N
                return  #结束循环、函数
            pwd = input(请输入密码:)#输入密码
            temp = {username:user,password:get_md5(pwd)}#用户名和密码通过加密放在字典里
            USER_LIST.append(temp)#将字典追加到列表里
    ?
    def login():
        print(**************用户登陆**************)#提示
        user = input(请输入用户名:)#输入
        pwd = input(请输入密码:)
    ?
        for item in USER_LIST:#循环列表里的字典
            if item[username] == user and item[password] == get_md5(pwd):#比较输入的内容与字典里是否一样
                return True
    ?
    register()
    result = login()
    if result:#判断返回值是否为真
        print(登陆成功)
    else:
        print(登陆失败)
    View Code
     
  • hmac输出的长度和原始哈希算法的长度一致。需要注意传入的key和message都是bytes类型,str类型需要首先编码为bytes

    import hmac
    message = b‘Hello world‘
    key = b‘secret‘
    h = hmac.new(key,message,digestmod=‘MD5‘)
    print(h.hexdigest())

     

5.4 time /datetime 时间模块

  • time.time() 时间戳

    import time 
    ?
    v = time.time() # 时间戳:1970-1-1 00:00
  • time.timezone 当前时区与时间戳相差的秒数

    import time
    print(time.timezone) # -28800
  • time.sleep(2) 睡2秒

  • datetime.now() 当前本地时间

    from datetime import datetime
    v1 = datetime.now()
    print(v1) # 2019-04-18 17:52:33.046206
  • timezone(timedelta(hours=7)) 获取东7区时间

    from datetime import datetime,timezone,timedelta
    ?
    tz = timezone(timedelta(hours=7)) # 当前东7区时间
    v2 = datetime.now(tz)
  • datetime.utcnow() 当前UTC时间

    from datetime import datetime,timezone,timedelta
    ?
    v3 = datetime.utcnow() # 当前UTC时间
    print(v3)
  • strftime 把datetime格式转换成字符串

    from datetime import datetime,timezone,timedelta
    ?
    v1 = datetime.now()
    print(v1,type(v1))
    val = v1.strftime("%Y-%m-%d %H:%M:%S")
    print(val)
  • strptime 字符串转成datetime

    from datetime import datetime,timezone,timedelta
    ?
    v1 = datetime.strptime(‘2011-11-11‘,‘%Y-%m-%d‘)
    print(v1,type(v1))
  • timedelta datetime时间的加减

    from datetime import datetime,timezone,timedelta
    ?
    v1 = datetime.strptime(‘2011-11-11‘,‘%Y-%m-%d‘)
    v2 = v1 - timedelta(days=140)
    date = v2.strftime(‘%Y-%m-%d‘)
    print(date)
  • 时间戳和datetime关系

    import time
    from datetime import datetime,timezone,timedelta
    ?
    ctime = time.time()
    print(ctime)
    v1 = datetime.fromtimestamp(ctime)
    print(v1)
    ?
    v1 = datetime.now()
    val = v1.timestamp()
    print(val)

第五章 模块之random 、hashlib、time /datetime

原文:https://www.cnblogs.com/dpsy921/p/11324209.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!