一、概述:
uuid(universally unique identity)的縮寫,是一種軟體建構的標準,通常由32位元組16進製制數表示(128位),它可以保證時間和空間的唯一性。目前應用最廣泛的uuid事微軟的guids。
二、作用:
uuid讓分布式系統所有元素都有唯一的辨識資訊,讓每個人都可以建立與他人不同的uuid,不需考慮資料庫建立時的名稱重複問題。隨機生成字串,當成token、使用者賬號、訂單等。
三、原理:
uuid是指一台機器上生成的數字,他保證同一時空所有機器都是唯一的。
uuid由以下幾部分構成:
(1)時間戳:根據當前時間或者時鐘序列生成字串
(2)全劇唯一的機器識別號,根據網絡卡mac位址或者ip獲取,如果沒有網絡卡則以其他方式獲取。
(3)隨機數:機器自動隨機一組序列
等等四、演算法
uuid有5種生成演算法,分別是uuid1()、uuid2()、uuid3()、uuid4()、uuid5()。
1、uuid1()基於時間戳
由mac位址、當前時間戳、隨機數字。保證全球範圍內的唯一性。但是由於mac位址使用會帶來安全問題,區域網內使用ip代替mac
2、uuid2() 基於分布式環境dce
演算法和uuid1相同,不同的是把時間戳前四位換成poix的uid,實際很少使用。注意:python中沒有這個函式
3、uuid3() 基於名字和md5雜湊值
通過計算名字和命名空間的md5雜湊值得到的,保證了同一命名空間中不同名字的唯一性,不同命名空間的唯一性。但是同一命名空間相同名字生成相同的uuid。
4、uuid4() 基於隨機數
由偽隨機數得到的,有一定重複概率,這個概率是可以算出來的
5、uuid5() 基於名字和sahi值
演算法和uuid3相同,不同的是使用sahi演算法
五、使用經驗:
1、python中沒有dce,所以uuid2可以忽略
2、uuid4存在概率重複性,由於無對映性,最好不使用
3、如果全域性的分布式環境下,最好使用uuid1
4、若名字的唯一性要求,最好使用uuid3或者uuid5
六、使用:
android 獲取手機唯一識別碼
如果獲取不到imsi號,就拼接其它資訊獲取唯一碼 結論是,依然有部分手機獲取不到。final telephonymanager tm telephonymanager getbasecontext getsystemservice context.telephony service string u...
c 獲取機器唯一識別碼
在客戶端認證的過程中,我們總要獲取客戶機的唯一識別資訊,曾經以為mac位址是不會變的,但是現在各種改,特別是使用無線上網絡卡,mac位址插一次變一次,所以這樣使用mac就沒有什麼意義了,怎麼辦,又開始求助google,最後找到乙個折中的方案 通過獲取主機板 處理器 bios mac 顯示卡 硬碟等的...
獲取Android系統的唯一識別碼
摘自 在計算機上,我們習慣用mac位址來標誌一台計算機。在android裝置上,可以用imie或者android id來標誌乙個裝置。看一下android上怎樣獲取這樣的資訊。乙個是telephonymanager的getdeviceid,另外乙個是settings.system的android i...