python學習之路—自動生成唯一標識(md5加密方式)

前言

     在python存入數據庫時,如果數據庫的主鍵不是自增方式,那麼我們可能需要自己生成一個唯一標識符,現在最好的方法就是md5加密生成的32位作爲主鍵,本文將會介紹python的兩種自動生成唯一標識的方式。

python MD5加密方法

     在介紹方式之前先了解一下python如何對數據進行md5加密

依賴包 :

import  hashlib

用法:

def md5(string):
    # 對要加密的字符串進行指定編碼
    string = string.encode(encoding ='UTF-8')
    # md5加密
    print(hashlib.md5(string))
    # 將md5 加密結果轉字符串顯示
    string = hashlib.md5(string).hexdigest()

方法一:

依賴包:

import uuid

用法:

# 獲取唯一加密值,uuid1 根據主機mac地址和時間戳生成全球唯一加密值唯一缺點會暴露mac地址
id = uuid.uuid1()
#將生成的加密值去除-獲得32位加密值
id = id.replace('-','')

知識點

       uuid是128位的全局唯一標識符(univeral unique identifier),通常用32位的一個字符串的形式來表現。有時也稱guid(global unique identifier)。python中自帶了uuid模塊來進行uuid的生成和管理工作。

  python中的uuid模塊基於信息如MAC地址、時間戳、命名空間、隨機數、僞隨機數來uuid。具體方法有如下幾個:  

  uuid.uuid1()  基於MAC地址,時間戳,隨機數來生成唯一的uuid,可以保證全球範圍內的唯一性,缺點會暴露mac地址。

  uuid.uuid2()  算法與uuid1相同,不同的是把時間戳的前4位置換爲POSIX的UID。不過需要注意的是python中沒有基於DCE的算法,所以python的uuid模塊中沒有uuid2這個方法。

  uuid.uuid3(namespace,name)  通過計算一個命名空間和名字的md5散列值來給出一個uuid

  uuid.uuid4()  通過僞隨機數得到uuid,是有一定概率重複的

  uuid.uuid5(namespace,name)  和uuid3基本相同,只不過採用的散列算法是sha1

--------------------- 

參考文檔:https://www.cnblogs.com/hellojesson/p/6410445.html 

                  https://www.cnblogs.com/franknihao/p/7307224.html

 

方法二:

依賴包: 

import hashlib
import os

用法:

//利用os隨機生成26個字符 然後對其md5加密

id = hashlib.md5(os.urandom(26)).hexdigest()

知識點:

os.urandom(n)函數

函數定位: Return a string of n random bytes suitable for cryptographic use. 
意思就是,返回一個有n個byte那麼長的一個string

在文檔中,被歸結於os這個庫的Miscellaneous Functions,意思是不同種類的函數(也可以說是混種函數) 
原因是: This function returns random bytes from an OS-specific randomness source. (函數返回的隨機字節是根據不同的操作系統特定的隨機函數資源。即,這個函數是調用OS內部自帶的隨機函數的。有特異性)
--------------------- 
參考文檔:https://blog.csdn.net/a19990412/article/details/80934268 
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章