zoukankan      html  css  js  c++  java
  • python UUID

    UUID介绍

    UUID是128位的全局唯一标识符,通常由32字节的字符串表示。它可以保证时间和空间的唯一性,也称为GUID,全称为:UUID ―― Universally Unique IDentifier,Python 中叫 UUID。

    它通过MAC地址、时间戳、命名空间、随机数、伪随机数来保证生成ID的唯一性。

    UUID主要有五个算法,也就是五种方法来实现。

    1

    uuid1()

    ――基于时间戳。由MAC地址、当前时间戳、随机数生成。可以保证全球范围内的唯一性,但MAC的使用同时带来安全性问题,局域网中可以使用IP来代替MAC。

    1

    uuid2()

    ――基于分布式计算环境DCE(Python中没有这个函数)。算法与uuid1相同,不同的是把时间戳的前4位置换为POSIX的UID。实际中很少用到该方法。

    1

    uuid3()

    ――基于名字的MD5散列值。通过计算名字和命名空间的MD5散列值得到,保证了同一命名空间中不同名字的唯一性,和不同命名空间的唯一性,但同一命名空间的同一名字生成相同的uuid。

    1

    uuid4()

    ――基于随机数。由伪随机数得到,有一定的重复概率,该概率可以计算出来。

    1

    uuid5()

    ――基于名字的SHA-1散列值。算法与uuid3相同,不同的是使用 Secure Hash Algorithm 1 算法。

    使用示例

    #! coding:utf-8

    import uuid

    printu"uuid1 生成基于计算机主机ID和当前时间的UUID"

    printuuid.uuid1() # UUID('a8098c1a-f86e-11da-bd1a-00112444be1e')

    printu" uuid3 基于命名空间和一个字符的MD5加密的UUID"

    printuuid.uuid3(uuid.NAMESPACE_DNS,'www.dadiqp.info') #UUID('6fa459ea-ee8a-3ca4-894e-db77e160355e')

    printu" uuid4 随机生成一个UUID"

    printuuid.uuid4() #'16fd2706-8baf-433b-82eb-8c7fada847da'

    printu" uuid5 基于命名空间和一个字符的SHA-1加密的UUID"

    uuid.uuid5(uuid.NAMESPACE_DNS,'') #UUID('886313e1-3b8a-5372-9b90-0c9aee199e5d')

    printu" 根据十六进制字符生成UUID"

    x = uuid.UUID('{00010203-0405-0607-0809-0a0b0c0d0e0f}')

    printu"转换成十六进制的UUID表现字符"

    printstr(x) #'00010203-0405-0607-0809-0a0b0c0d0e0f'

    结果

    uuid1 生成基于计算机主机ID和当前时间的UUID

    31a936a1-2339-11e6-8542-9cb70ded607f

    uuid3 基于命名空间和一个字符的MD5加密的UUID

    6fa459ea-ee8a-3ca4-894e-db77e160355e

    uuid4 随机生成一个UUID

    67e6497c-8aec-4413-9955-da86f38ff2d6

    uuid5 基于命名空间和一个字符的SHA-1加密的UUID

    根据十六进制字符生成UUID

    转换成十六进制的UUID表现字符

    00010203-0405-0607-0809-0a0b0c0d0e0f



    作者:mjsws
    链接:http://www.jianshu.com/p/d553318498ad
    來源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    mac os programming
    Rejecting Good Engineers?
    Do Undergrads in MIT Struggle to Obtain Good Grades?
    Go to industry?
    LaTex Tricks
    Convert jupyter notebooks to python files
    How to get gradients with respect to the inputs in pytorch
    Uninstall cuda 9.1 and install cuda 8.0
    How to edit codes on the server which runs jupyter notebook using your pc's bwroser
    Leetcode No.94 Binary Tree Inorder Traversal二叉树中序遍历(c++实现)
  • 原文地址:https://www.cnblogs.com/jingtyu/p/7473142.html
Copyright © 2011-2022 走看看