zoukankan      html  css  js  c++  java
  • Python学习笔记:利用UUID模块随机生成36位长度字符串

    一、背景介绍

    UUID(Universally Unique Identifier) 是通用唯一识别码。

    对于所有的 UUID 它可以保证在空间和时间上的唯一性,它使通过 MAC 地址、时间戳、命名空间、随机数、伪随机数等参数来保证生成 ID 的唯一性。

    拥有着固定的大小(128bit)。

    它的唯一性和一致性特点使得可以无需注册过程就能够产生一个新的 UUID

    UUID 可以被用作多种用途,既可以用来短时间内标记一个对象,也可以可靠的辨别网络中的持久性对象。

    二、uuid模块介绍

    Python 中的 uuid 包提供 uuid1()uuid3()uuid4()uuid5() 来生成各个版本的 uuid

    注意:没有 uuid2() 函数。

    1.uuid.uuid1 基于时间戳

    使用主机 ID、序列号和当前时间戳来生成 UUID,可保证唯一性。

    涉及主机网络地址,可能危及隐私。

    使用语法:

    uuid.uuid1([node [, clock_seq]])
    -- node 未指定时自动调用getnode()获取主机硬件地址
    -- clock_seq 参数未指定系统会使用一个随机产生的14位序列号来代替
    

    2.uuid.uuid3 基于名字的MD5散列值

    通过计算命名空间和名字的MD5哈希值来生成 UUID, 可以保证唯一性。

    使用语法:

    uuid.uuid3(namespace, name)
    

    3.uuid.uuid4 基于随机数

    通过随机数来生成 UUID, 使用的是伪随机数,有一定的重复概率。

    uuid.uuid4() # 不带任何参数
    

    4.uuid.uuid5 基于名字的SHA-1散列值

    通过计算命名空间和名字的 SHA-1 哈希值来生成 UUID, 算法与 uuid.uuid3() 相同。

    uuid.uuid5(namespace, name)
    

    三、实操

    输出结果均为36个字符。

    import uuid
    
    uuid.uuid1() # UUID('29cfec4a-5909-11ec-bc6d-005056c00008')
    
    uuid.uuid3(uuid.NAMESPACE_DNS, 'python.org') # UUID('6fa459ea-ee8a-3ca4-894e-db77e160355e')
    
    uuid.uuid4() # UUID('cd5187a2-6dd6-49a8-8934-1a3911a3d2f0')
    
    uuid.uuid5(uuid.NAMESPACE_DNS, 'python.org') # UUID('886313e1-3b8a-5372-9b90-0c9aee199e5d')
    
    x = uuid.UUID('{00010203-0405-0607-0809-0a0b0c0d0e0f}')
    str(x) # '00010203-0405-0607-0809-0a0b0c0d0e0f'
    x.bytes # b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f'
    uuid.UUID(bytes=x.bytes) # UUID('00010203-0405-0607-0809-0a0b0c0d0e0f')
    

    UUID 中间的 ”-“ 可利用以下脚本替换:

    xx = str(uuid.uuid4()) # '8881d110-9788-4221-84ff-0a5e62224250'
    
    # 方法一
    xx.replace('-','') # '8881d1109788422184ff0a5e62224250'
    
    # 方法二
    ''.join(xx.split('-')) # '8881d1109788422184ff0a5e62224250'
    
    # 方法三
    uuid.UUID('{8881d110-9788-4221-84ff-0a5e62224250}').hex # '8881d1109788422184ff0a5e62224250'
    

    参考链接:python uuid 介绍

    参考链接:python生成并处理uuid的方法

  • 相关阅读:
    172. Factorial Trailing Zeroes
    96. Unique Binary Search Trees
    95. Unique Binary Search Trees II
    91. Decode Ways
    LeetCode 328 奇偶链表
    LeetCode 72 编辑距离
    LeetCode 226 翻转二叉树
    LeetCode 79单词搜索
    LeetCode 198 打家劫舍
    LeetCode 504 七进制数
  • 原文地址:https://www.cnblogs.com/hider/p/15669870.html
Copyright © 2011-2022 走看看