• python通过sha1和base64生成签名


    一、python生成时间戳

    # 案例 生成时间戳
    import time
    t = time.time()
    print(t)  # 原始时间数据
    print(int(t))  # 秒级时间戳
    print(int(round(t * 1000)))  # 毫秒级时间戳
    print(int(round(t * 1000000)))  # 微秒级时间戳
    
    
    # 13位  时间戳转换成时间:
    import time
    now = int(round(time.time() * 1000))
    print(now)  # 1600349693374
    now02 = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(now / 1000))
    now02  # 2020-09-17 21:35:32

    二、python根据uuid生成唯一id

       uuid是128位的全局唯一标识符(univeral unique identifier),通常用32位的一个字符串的形式来表现。
       有时也称guid(global unique identifier)。python中自带了uuid模块来进行uuid的生成和管理工作。(具体从哪个版本开始有的不清楚。。)
    
      python中的uuid模块基于信息如MAC地址、时间戳、命名空间、随机数、伪随机数来uuid。具体方法有如下几个:  
      uuid.uuid1()  基于MAC地址,时间戳,随机数来生成唯一的uuid,可以保证全球范围内的唯一性。
      uuid.uuid2()  算法与uuid1相同,不同的是把时间戳的前4位置换为POSIX的UID。不过需要注意的是python中没有基于DCE的算法,所以python的uuid模块中没有uuid2这个方法。
      uuid.uuid3(namespace,name)  通过计算一个命名空间和名字的md5散列值来给出一个uuid,所以可以保证命名空间中的不同名字具有不同的uuid,但是相同的名字就是相同的uuid了。【感谢评论区大佬指出】
       namespace并不是一个自己手动指定的字符串或其他量,而是在uuid模块中本身给出的一些值。比如uuid.NAMESPACE_DNS,uuid.NAMESPACE_OID,uuid.NAMESPACE_OID这些值。这些值本身也是UUID对象,根据一定的规则计算得出。
      uuid.uuid4()  通过伪随机数得到uuid,是有一定概率重复的
      uuid.uuid5(namespace,name)  和uuid3基本相同,只不过采用的散列算法是sha1
    import uuid
    
    name = 'test_name'
    # namespace = 'test_namespace'
    namespace = uuid.NAMESPACE_URL
    
    print (uuid.uuid1())
    print (uuid.uuid3(namespace,name))
    print (uuid.uuid4())
    print (uuid.uuid5(namespace,name))
    
    # 结果:
    # 9193fad2-f8eb-11ea-96c4-14109fdbf75f
    # f15bb8f8-2f0c-3b7c-9ee7-79b874d9837b
    # 2f9fa510-6fe8-467e-ab09-d48a2ec54ba4
    # 62740382-6394-5d1c-b9ef-d5a953ac1213

    三、生成签名的方法

    signature
    from hashlib import sha1
    import base64
    import hmac
    from hmac import new as hmac
    
    # 授权
    def hash_hmac(ac_key, text):
        return str(hmac(ac_key, text, sha1).digest().encode('base64')[:-1])


    案例2

    code=var1+var2+var3
    key = "kjhcisduhfcjdscgdscgdFGHHK99w328"
    signature = self.hash_hmac(code,key,sha1)

    def hash_hmac(self,code,key,sha1):
    hmac_code = hmac.new(key.encode("utf-8"),code.encode("utf-8"),sha1).digest()
    return base64.b64encode(hmac_code).decode()
  • 相关阅读:
    Maximum Flow Exhaustion of Paths Algorithm
    ubuntu下安装java环境
    visualbox使用(二)
    vxworks一个超级奇怪的错误(parse error before `char')
    February 4th, 2018 Week 6th Sunday
    February 3rd, 2018 Week 5th Saturday
    February 2nd, 2018 Week 5th Friday
    February 1st, 2018 Week 5th Thursday
    January 31st, 2018 Week 05th Wednesday
    January 30th, 2018 Week 05th Tuesday
  • 原文地址:https://www.cnblogs.com/1314520xh/p/13687925.html
Copyright © 2020-2023  润新知