2014-06-23 20 views
0

不知道爲什麼,但我最近對GUID感興趣。看了他們其中的一些後,我寫了一個函數來生成它們,但用http://guid.us/Test/GUID驗證它們不通過它。我的發生器中的一些GUID:GUID信息

914HK4XO-GF46-EDNY-07AW-FDB0ZHI8ZLP8 
OHF7XXMG-E1YK-9EOL-G94E-WC9MCSFI0CXE 
0X1X295G-Q394-DX8N-5C39-5I858I7WFRHH 

是什麼使這些與以下有效的GUID不同?

C5D850D4-4273-4170-A3C5-61B84F88105E 
AAF77D1B-D1CF-4562-B624-204DC876CA17 
18C50D98-D3F7-4C3A-9E67-CFAFB3D53F38 

給我打電話,但我沒有看到兩者之間的區別。

+0

你剛纔拍了一堆隨機數字嗎? GUID不是完全隨機的(主要是)。你應該閱讀規範。 http://www.ietf.org/rfc/rfc4122.txt –

+0

@ RyanV.Bissell這就是我一直在尋找的。我找不到這樣的東西,但我知道他們必須通過這個正則表達式'/^[0-9a-f] {8} - [0-9a-f] {4} - [1-5] [0- 9a-f] {3} - [89ab] [0-9a-f] {3} - [0-9a-f] {12} $/i' – Spedwards

+1

爲什麼沒有提到生成的GUID值不是十六進制? – Joe

回答

0

那麼,可能的原因可能是一個GUID不只是32個字節的隨機和獨特的數據。它也必須符合一些準則。最接近的是我猜信用卡號碼。它們都是獨一無二的,但同時並非每一個唯一的號碼都可以成爲有效的信用卡號碼。還有一個算法可以檢查它的有效性。順便說一句,我只聽說過有關信用卡號碼的事情,所以我不能100%確定他們是如何工作的。

1

GUID中的第13個元素是GUID版本。在有效的GUID中,它們都是「4」(即版本4)。無論您使用何種語言,都有可能存在符合GUID庫。有關各種格式的詳細說明,請參見http://en.wikipedia.org/wiki/Globally_unique_identifier

+1

我正在使用Javascript,我喜歡在使用庫之前嘗試編寫自己的東西。 – Spedwards

+0

瞭解。我剛剛在編輯中引用的網站可能會讓您朝正確的方向發展。 – MichaelMilom

0

UUID(又名GUID)在結構上由「varient」定義。例如,RFC 4122概述了具有五個版本的特定UUID變量。

研究RFC 4122以更好地理解定義該變量和版本的重要位可能會有幫助。可以觀察這些位並「反向工程」UUID,揭示UID的變體,版本等。

您可以使用"Mahonri Moriancumer's UUID and GUID Generator and Forensics"來研究UUID此網站可幫助您更好地理解UUID格式,變體,版本等。