logo

Kaip sugeneruoti UUID naudojant Python

Šioje pamokoje aptarsime, kaip sugeneruoti UUID Python naudojant uuid modulį. Prieš pasinerdami į šią temą, supraskime pagrindinę UUID sąvoką.

Įvadas

UUID yra pavadinimo santrumpa visuotinai unikalūs identifikatoriai taip pat žinomas kaip GUID, t. y. pasauliniu mastu unikalus identifikatorius. Tai 128 bitų ID numeris, skirtas unikaliai apibrėžti dokumentus, vartotojus, išteklius ar informaciją. Yra įvairių UUID versijų; visus juos aptarsime būsimame skyriuje.

  • UUID naudojamas unikaliems identifikatoriams erdvėje ir laike apibrėžti. Erdvė ir laikas reiškia, kad sukūrus UUID pagal standartą, identifikatoriai negali dubliuoti esamų išteklių.
  • UUID yra tinkamiausia parinktis, kai reikia unikalumo.
  • Tai atlieka esminį vaidmenį kriptografijoje ir maišos programoje.

Kada naudoti UUID

UUID modulis gali būti naudojamas šiais atvejais.

Žiniatinklio programoje –

  • UUID padeda mums valdyti būseną generuodamas unikalus seanso ID.
  • Paprastai vartotojų ID generuoti naudojame automatinio didinimo vertes. Tai gana paprastas metodas ir lengva atspėti. Tačiau UUID sunku atspėti, nes jie nėra kuriami iš eilės.

Duomenų bazių sistemoje

tcp ir ip modelis
  • Tai suteikia reikšmingą pranašumą duomenų bazėje, nes UUID yra nepriklausomas nuo aplinkos. Tai reiškia, kad galime sukurti UUID bet kuriame kompiuteryje naudodami bet kurią programą.
  • Dauguma programų priklauso nuo duomenų bazės serverio, kad sukurtų unikalų arba pirminį raktą. UUID yra gera galimybė generuoti unikalų duomenų bazės raktą, kuris padeda mums pakeisti raktų generavimo metodą duomenų bazėje.
  • UUID yra tikroji reikšmė, o ne pseudo reikšmė, kaip skaičius SQL lentelėje.

Python uuid modulis

Python uuid modulis įdiegtas pagal RFC 4122, interneto visuomenės standartą ir Autorių teisių ©. Python UUID modulio pagalba galime generuoti įvairių tipų UUID, pavyzdžiui, 1, 3, 4 ir 5 versijų UUID. Python modulis palaiko šias UUID versijas.

    UUID1 –Jis generuoja unikalų numerį naudodamas MAC adresą ir dabartinį laiko komponentą.UUID4 –UUID generuoti naudojami pseudoatsitiktinių skaičių generatoriai, o tokius UUID tipus galima naudoti saugumo sumetimais.UUID3 ir UUID5 –Jis naudoja kriptografinę maišą ir programos teikiamas teksto eilutes UUID generavimui.

Sukurkite UUID naudodami Python UUID modulį

Sugeneruokime įvairių versijų UUID naudodami Python uuid modulį.

Naudojant uuid1() - Norėdami sugeneruoti uuid, turime importuoti uuid modulį ir iškviesti uuid1() metodą. Supraskime šį pavyzdį.

Pavyzdys – 1

 import uuid # Printing random id using uuid1() print ('The random generated uuid is : ', uuid.uuid1()) 

Išvestis:

 The random id using uuid1() is : ab2d0fc0-7224-11ec-8ef2-b658b885fb3 

UUID struktūra

Kaip matome, pirmiau minėtame UUID yra penki komponentai ir kiekvienas komponentas yra vienodo ilgio. UUID struktūra yra formato „8-4-4-4-12“.

UUID eilutės vaizdavimas pateiktas žemiau -

 UUID = time_low '-' time_mid '-'time_high_and_version ' 'clock_seq_and_reserved_And_clock_seq_low'-' Node. 

Išskaidykime aukščiau nurodytus UUID laukus

xml komentaras
    time_low –Tai pirmieji 32 ID bitai.time_mid -Tai yra kiti 16 ID bitų.time_high_and_version –Tai yra kiti 16 ID bitų.clock_seq_hi_variant :Tai kiti 8 ID bitai.clock_seq_low :Tai kiti 8 ID bitai.mazgas:Tai paskutiniai 48 ID bitai.laikas :Tai laiko komponento ID laukas.clock_seq :Tai 14 bitų eilės numeris.

Supraskime kitą UUID generavimo įvairiais formatais, pvz., baitais, int ir šešioliktadieniais, pavyzdį.

Pavyzdys – 2:

 import uuid id = uuid.uuid1() # Representations of uuid1() print ('The byte Representations of uuid1() are : ') print (repr(id.bytes)) print ('Integer Value Representation: ',end='') print(id.int) print ('hex Value Representation : ',end='') print (id.hex) print('
') # The components of uuid1() print ('The components of uuid1() are : ') print ('Version : ',end='') print (id.version) print ('Variant : ',end='') print (id.variant) print('
') # Fields of uuid1() print ('The Fields of uuid1() are : ') print ('Fields : ',end='') print (id.fields) print('UUID.fields :', id.fields) print('Prining each field seperately') print('UUID.time_low : ', id.time_low) print('UUID.time_mid : ', id.time_mid) print('UUID.time_hi_version : ', id.time_hi_version) print('UUID.clock_seq_hi_variant: ', id.clock_seq_hi_variant) print('UUID.clock_seq_low : ', id.clock_seq_low) print('UUID.node : ', id.node) print('UUID.time : ', id.time) print('UUID.clock_seq : ', id.clock_seq) print('UUID.SafeUUID : ', id.is_safe) print('
') # The time Component of uuid1() print ('The time Component of uuid1() is : ') print ('Time component : ',end='') print (id.node) 

Išvestis:

 The byte Representations of uuid1() are : b'xb9xeaxb88sx0ex11xecxbfvx86xa0;xe4`x12' int Representation : 247125913120858544596828814248071421970 hex Representation : b9eab838730e11ecbf7686a03be46012 The Components of uuid1() are : Version : 1 Variant : specified in RFC 4122 The Fields of uuid1() are : Fields : (3119167544, 29454, 4588, 191, 118, 148022757711890) The time Component of uuid1() is : Time component : 148022757711890 UUID.time_mid : 29460 UUID.time_hi_version : 4588 UUID.clock_seq_hi_variant: 186 UUID.clock_seq_low : 100 UUID.node : 90979746151630 UUID.time : 138612218401246920 UUID.clock_seq : 14948 UUID.SafeUUID : SafeUUID.unsafe 

UUID1 trūkumai

UUID1 yra susietas su kompiuterio MAC adresu, todėl gali kelti grėsmę privatumui. Tačiau tai suteikia visišką unikalumą.

2 būdas: naudokite uuid4()

Šis metodas generuoja atsitiktinius skaičius, garantuojančius privatumą. Supraskime šį pavyzdį.

Pavyzdys -

 import uuid id = uuid.uuid4() # Id generated using uuid4() print ('The id generated using uuid4() : ',end='') print (id) 

Išvestis:

 The id generated using uuid4() : 53967be6-71e9-4ee9-9912-60d02d2d9b0a 

uuid1() vs uuid4

The uuid1() suteikia garantiją, kad nesusidurs. Galime sukurti UUID dublikatus, sukūrę daugiau nei 16384 uuid1 per mažiau nei 100 ns. Tai negarantuoja privatumo. The uuid1() nerekomenduojama, jei nenorite matyti savo įrenginio MAC adresų.

Metodas uuid4() generuoja atsitiktinį UUID, naudodamas kriptografiškai sugeneruotus saugių skaičių generatorius. Tai sukuria saugesnius UUID. Rekomenduojama, kai UUID reikia generuoti atskiruose įrenginiuose.

UUID 3 ir UUID 5, kad sukurtumėte vardu pagrįstą UUID

Pavadinimu pagrįstas UUID reiškia, kad galime generuoti UUID naudodami 3 arba 5 versijos UUID.

Mes galime naudoti pavadinimus ir vardų erdves, kad sukurtume unikalių UUID seriją. 3 ir 5 versijose vardų erdvės identifikatorius maišomas su pavadinimu.

The uuid3() metodas generuoja UUID, pagrįstą vardų erdvės identifikatoriaus MD5 maiša ir eilute. Kita vertus, uuid5() metodas generuoja UUID, remdamasis vardų erdvės identifikatoriaus SHA-1 maišos technika.

Toliau pateikiami vardų erdvių identifikatoriai, apibrėžti uuid3() arba uuid5().

    NAMESPACE_DNS –Tai yra tradicinis domeno vardas. Pavyzdžiui, https://javatpoint.com.NAMESPACE_URL –Tai reiškia URL.NAMESPACE_OID –Ši vardų sritis yra nurodyta ISO OID eilutėje.NAMESPACE_X500 –Kai nurodyta ši vardų sritis, pavadinimo eilutė yra X.500 DN DER arba teksto išvesties formatas.

Supraskime šį pavyzdį, kaip generuoti UUID3 ir UUID5 naudojant įvairius pagrindinio kompiuterio pavadinimus ir vardų erdvę.

Pavyzdys -

avinas aktorius
 import uuid host_names = ['javatpoint.com', 'tutorialandexample.com'] for host in host_names: print('Generate uuid 3 version using name as',host,' and namespace as uuid.NAMESPACE_DNS') print(uuid.uuid3(uuid.NAMESPACE_DNS, host)) print('Generate uuid 5 version using name as', host, ' and namespace as uuid.NAMESPACE_DNS'), print(uuid.uuid5(uuid.NAMESPACE_DNS, host)) print() 

Išvestis:

 Generate uuid 3 version using name as javatpoint.com and namespace as uuid.NAMESPACE_DNS 98bbe92a-b38f-3289-a4b4-80ec1cfdf8cb Generate uuid 5 version using name as javatpoint.com and namespace as uuid.NAMESPACE_DNS 0fc2d4dd-7194-5200-8050-f0ca1dd04b3d Generate uuid 3 version using name as tutorialandexample.com and namespace as uuid.NAMESPACE_DNS 6f6fe445-1c4c-3874-854e-c79f617effe5 Generate uuid 5 version using name as tutorialandexample.com and namespace as uuid.NAMESPACE_DNS 781c3cc9-4965-5fdc-9c40-89bb0ea8ec0d 

2 pavyzdys: sugeneruokite UUID 3 ir UUID 5 naudodami kitą vardų erdvę

 import uuid name_spaces = [uuid.NAMESPACE_DNS, uuid.NAMESPACE_URL, uuid.NAMESPACE_OID, uuid.NAMESPACE_X500] host_name = 'pynative.com' print('Generate uuid using namespace') for namespace in name_spaces: print('uuid 3 is', uuid.uuid3(namespace, host_name)) print('uuid 5 is', uuid.uuid5(namespace, host_name)) print() 

Išvestis:

 Generate uuid using namespace uuid 3 is 6ddc8513-dc7b-3b37-b21b-a1ca9440fe14 uuid 5 is 8d6a1314-170a-559c-afe7-b68d1d7ee9ac uuid 3 is 5dcfef3e-bcc9-38bc-b989-4a7516a05974 uuid 5 is 3a4a6c31-8d6a-5583-8497-d2ed90b1f13a uuid 3 is 84d9730f-330f-3634-9542-4acfcdcd6c60 uuid 5 is 899f3d4b-6095-5ee6-9805-68e0c51dcb39 uuid 3 is b140fa3b-983a-3efe-85ef-92f07d5e09a0 uuid 5 is 73b723ef-5c5e-5eb4-8fcc-aabb5c4e7803 

uuid3 ir uuid5 elgesys

  • Nepaisant tos pačios vardų erdvės ir to paties pavadinimo, UUID generuojami skirtingu laiku.
  • Dvi skirtingos vardų erdvės toje pačioje vardų erdvėje skiriasi, ji generuoja unikalius ID.

Pavyzdys – 3

 import uuid print('Generate version 3 uuid using name as pynative.com and namespace as uuid.NAMESPACE_DNS') print(uuid.uuid3(uuid.NAMESPACE_DNS, 'javatpoint.com')) print('Generate version 3 uuid using name as pynative.com and namespace as uuid.NAMESPACE_DNS') print(uuid.uuid3(uuid.NAMESPACE_DNS, 'javatpoint.com')) 

Išvestis:

 Generate version 3 uuid using name as pynative.com and namespace as uuid.NAMESPACE_DNS 98bbe92a-b38f-3289-a4b4-80ec1cfdf8cb Generate version 3 uuid using name as pynative.com and namespace as uuid.NAMESPACE_DNS 98bbe92a-b38f-3289-a4b4-80ec1cfdf8cb 

Kaip konvertuoti eilutę į UUID ir UUID į eilutę Python?

The uuid.uuid1() metodas grąžina UUID klasės egzempliorių. Mes galime gauti UUID eilutės atvaizdavimą naudodami str() metodas. Atitinkamas eilutės formatas gali būti naudojamas palyginimui arba manipuliavimui. Supraskime šį pavyzdį.

Pavyzdys -

 import uuid UUID1_VAL = uuid.uuid1() print('The version 1 UUID is ', UUID1_VAL) # convert a UUID to a string of hex digits in standard form print('The version 1 UUID in String format', str(UUID1_VAL)) # Use replace() method to remove dashes from string uuidString = str(UUID1).replace('-', '') print('Version 1 UUID in String removing dashes', uuidString) 

Išvestis:

 The version 1 UUID is cdca7930-7488-11ec-a0c4-4984d2946471 UUID of version 1 in String format cdca7930-7488-11ec-a0c4-4984d2946471 Version 1 UUID in String format cdca7930-7488-11ec-a0c4-4984d2946471 Version 1 UUID in String removing dashes cdca7930748811eca0c44984d2946471 

Dabar mes sukursime UUID iš eilutės.

Kartais UUID gauname eilutės formatu. Ir mūsų programa turi ją konvertuoti į UUID klasės egzempliorių kai kurioms programoms. Supraskime šį pavyzdį, kaip konvertuoti eilutės formatuotą UUID.

objektas jsonobject java

Pavyzdys -

 import uuid import uuid UUIDStrings = ['{c7c9de0a-d676-11e8-8d62-ccaf789d94a0}', '018c168c-d509-11e8-b096-ccaf789d94a0', 'urn:uuid:e5e9394c-daed-498e-b9f3-69228b44fbfa'] for string in UUIDStrings: # make a UUID from a string of hex digits (braces and hyphens ignored) myUUID = uuid.UUID(string) print('My UUID is', myUUID) print('My UUID time component is', myUUID.time) print() 

Išvestis:

sujungimai ir sujungimų tipai
 UUID is c7c9de0a-d676-11e8-8d62-ccaf789d94a0 Time component is 137595594281180682 UUID is 018c168c-d509-11e8-b096-ccaf789d94a0 Time component is 137594023292180108 UUID is e5e9394c-daed-498e-b9f3-69228b44fbfa Time component is 688728508333635916 

Pavyzdys – 2:

 import uuid def display(message, l): print(message) for v in l: print(v) print() string_uuids = [ 'urn:uuid:f2f84497-b3bf-493a-bba9-7c68e6def80b', '{417a5ebb-01f7-4ed5-aeac-3d56cd5037b0}', '2115773a-5bf1-11dd-ab48-001ec200d9e0', ] display('string UUID', string_uuids) uuids = [ uuid.UUID(s) for s in string_uuids ] display('converted to uuids', uuids) uuids.sort() display('sorted value', uuids) 

Išvestis:

 string UUID urn:uuid:f2f84497-b3bf-493a-bba9-7c68e6def80b {417a5ebb-01f7-4ed5-aeac-3d56cd5037b0} 2115773a-5bf1-11dd-ab48-001ec200d9e0 converted to uuids f2f84497-b3bf-493a-bba9-7c68e6def80b 417a5ebb-01f7-4ed5-aeac-3d56cd5037b0 2115773a-5bf1-11dd-ab48-001ec200d9e0 sorted value 2115773a-5bf1-11dd-ab48-001ec200d9e0 417a5ebb-01f7-4ed5-aeac-3d56cd5037b0 f2f84497-b3bf-493a-bba9-7c68e6def80b 

Sukurkite atkuriamus UUID

Kaip minėjome anksčiau, UUID turi įvairių atributų. Tą patį UUID galime naudoti naudodami bet kurį jo atributą. Naudojant uuid modulis , mes galime sukurti tą patį uuid bet kada naudojant sėklos vertę. Pradinė vertė taip pat gali būti naudojama tam pačiam UUID generuoti. Supraskime abi sąvokas.

Šios įvestys gali būti naudojamos kuriant UUID egzempliorių.

  • Styga
  • Baitai
  • Bytes_le
  • Laukai
  • tarpt

Naudojant bet kurią iš aukščiau nurodytų reikšmių, galima sugeneruoti UUID. Pažiūrėkime šį pavyzdį, kuriame naudojame visas šias to paties UUID reikšmes.

Pavyzdys -

 import uuid print('Generating UUID from int') UUID_x = uuid.UUID(int=236357465324988601727440242910546465952) print('UUID is', UUID_x) print('UUID from URN') UUID_x1 = uuid.UUID('urn:uuid:b1d0cac0-d50d-11e8-b57b-ccaf789d94a0') print('UUID is', UUID_x1) print('UUID from bytes') UUID_x2 = uuid.UUID(bytes=b'xb1xd0xcaxc0xd5
x11xe8xb5{xccxafxx9dx94xa0') print('UUID is', UUID_x2) print('UUID from bytes_len') UUID_x3 = uuid.UUID(bytes_le=b'xc0xcaxd0xb1
xd5xe8x11xb5{xccxafxx9dx94xa0') print('UUID is', UUID_x3) print('UUID from fields') UUID_x4 = uuid.UUID(fields=(2983250624, 54541, 4584, 181, 123, 225054014936224)) print('UUID is', UUID_x4) 

Išvestis:

 Generating UUID from int UUID is b1d0cac0-d50d-11e8-b57b-ccaf789d94a0 UUID from URN UUID is b1d0cac0-d50d-11e8-b57b-ccaf789d94a0 UUID from bytes UUID is b1d0cac0-d50d-11e8-b57b-ccaf789d94a0 UUID from bytes_len UUID is b1d0cac0-d50d-11e8-b57b-ccaf789d94a0 UUID from fields UUID is b1d0cac0-d50d-11e8-b57b-ccaf789d94a0 

Atkurkite UUID su sėkla

Kaip rodo jo pavadinimas, Faker modulis mums generuoja netikrus duomenis. Naudojome faker modulį tam, kad pakartotinai generuotume tą patį UUID. Supraskime šį pavyzdį.

Pavyzdys -

 import uuid from faker import Faker fake_obj = Faker() fake_obj.seed(8754) print(faker_obj.uuid4()) fake_obj.seed(8754) print(fake_obj.uuid4()) 

Išvestis:

 b1d0cac0-d50d-11e8-b57b-ccaf789d94a0 b1d0cac0-d50d-11e8-b57b-ccaf789d94a0 

Išvada

Šioje pamokoje mes išsamiai aptarėme uuid modulį ir supratome, kaip galime generuoti įvairius UUID. UUID padeda mums apibrėžti programos / duomenų bazės unikalumą, taip pat padeda apibrėžti dokumentų, prieglobų, programos, klientų ir kitų situacijų identifikatorius.