Page 1 of 2 1 2 LastLast
Results 1 to 15 of 18

Thread: Unieke int64 afgeleid van string

  1. #1

    Unieke int64 afgeleid van string

    In het artikel over partial serial number wordt gesproken over een random seed die afgeleid van een string en uniek als int64 zou moeten zijn.

    Mijn vraag is eigenlijk hoe kan ik een unieke int64 van een string generen?

  2. #2
    Volgens mij is je keyspace te klein bij 64 bit on uniekheid te kunnen "garanderen" maar als eerste implementatie zou je een SHA of MD5 kunnen berekenen over de string en dan de eerste 64 bit in je int64 kopieren.

  3. #3
    Volgens heb je dan kans dat het niet uniek is.

  4. #4
    Lijkt een beetje op GUID
    DeX 3 Delphi := The ease of VB with the power of C; Zoekt en gij zult vinden

  5. #5
    Als je string niet meer dan 8 tekens is, dan kun je die 8 tekens rechtstreeks kopieren naar het adres van je Int64. Bij minder bytes kun je het restant opvullen met nullen. Als je meer dan 8 tekens hebt, dan kun je geen unieke int64 genereren uit de string.

    Overigens zeg ik 8 tekens, maar het zijn natuurlijk 8 bytes, ofwel 8 ansichars. Als je unicode tekens hebt, dan kun je misschien maar 4 of zelfs minder tekens kwijt in je int64.
    1+1=b

  6. #6
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,357
    Quote Originally Posted by GolezTrol View Post
    . Als je meer dan 8 tekens hebt, dan kun je geen unieke int64 genereren uit de string.
    (... zonder een registratie bij te houden van uitgegeven nummers. )

  7. #7
    Da's waar. Als je een registratie bijhoudt, dan kun je in een Int64 2^64 strings samenvatten door een indexje aan te leggen. Maar je kunt dan nog steeds niet elke string vertalen naar een unieke Int64, omdat er meer mogelijke strings zijn dan mogelijke waarden in een Int64 (al zul je op die manier wel niet zo snel tegen die limiet aanlopen. )
    1+1=b

  8. #8
    Fornicatorus Formicidae VideoRipper's Avatar
    Join Date
    Mar 2005
    Location
    Vicus Saltus Orientalem
    Posts
    5,703
    Even er vanuit gaande dat deze vraag te maken heeft met je andere overpijnzingen
    betreffende beveiligingen...

    Zoals je zelf al vermoedde in post #3 zijn 64 bits niet erg veel om uniek te zijn, net zo min
    als dat hashes (MD4/5, SHA, etc.) absoluut uniek zijn.
    Het is echter wel zo dat naarmate het aantal bruikbare bits groter wordt, de kans op het
    (snel) kraken van een beveiligings-controle kleiner wordt.

    Vanaf 128 bits (zoals bij MD5) wordt het zelfs onder krakers/hackers interessanter om zgn.
    "Rainbow tables" te gebruiken, dan om middels "Brute force" een beveiliging te omzeilen.
    (Deze weg gebruikt dan ook eigenlijk de zwakste schakel in een beveiliging, oftewel de mens zelf)

    Afhankelijk van waar je het precies voor wilt gebruiken, moet je je beslissingen dus goed overwegen.

    Greetz,

    Peter.
    TMemoryLeak.Create(Nil);

  9. #9
    Zelfs bij GUIDs heb je de kans dat hij niet uniek is. Als je bijvoorbeeld scheldwoorden uit een web respons wil filteren is een doublure niet verschrikkelijk. Om de uniekheid te garanderen kan je nooit met alleen een hash functie uit als je niet van te voren alle mogelijke waarden hebt (zoek eens op perfect hashing) Bij goed hash functies (zoals MD5, SHA, en mogelijk ook CRC32) zul je altijd mogelijke collisions hebben en wel met een waarschijnlijkheid van 1/wortel(keyspace); dus voor een int64 heb je statistisch gezien een collision bij 2^32 items in je lijst!

  10. #10
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,357
    Ik dacht dat systeem GUIDs wel uniek waren. Ze bestaan IIRC namelijk uit iets wat van een mac adres (gegarandeerd uniek) gegenereerd is, een timestamp van de OS installatie (om opeenvolgende installs uit elkaar te houden), en een volgnummer.
    Last edited by marcov; 31-Dec-09 at 15:43.

  11. #11
    Als een GUID niet uniek zou zijn valt er heel veel uit elkaar, dus ja die is zeker uniek.
    Marcel

  12. #12
    Het is niet gegarandeerd dat het uniek is maar er zijn zoveel combinaties (2^128) dat het bijna onmogelijk is om 2x zelfde guid terug te krijgen
    DeX 3 Delphi := The ease of VB with the power of C; Zoekt en gij zult vinden

  13. #13
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,357
    Henkie: waar heb je die informatie vandaan? Een GUID is sowieso niet helemaal random, er zitten system specifieke deel in (vroeger mac, tegenwoordig een complere formule die een fallback heeft naar een Mac), dus die 2^128 haal je al niet.

    Een en ander is origineel ontworpen voor Corba (waar COM een Microsoft aftreksel van is).

    Maar ook op Unices worden UUIDs veel gebruikt. Solaris altijd al, en FreeBSD en Linux tegenwoordig ook (b.v. de partities worden met uuids uit elkaar gehouden)

  14. #14
    While each generated GUID is not guaranteed to be unique, the total number of unique keys (2^128 or 3.4?ù1038) is so large that the probability of the same number being generated twice is extremely small.
    Bron
    DeX 3 Delphi := The ease of VB with the power of C; Zoekt en gij zult vinden

  15. #15
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,357
    Quote Originally Posted by Henkie View Post
    Ik heb het doorgelezen, maar dat beetje in de bron geeft geen bronvermelding. Ik vertrouw het niet erg, want de text leest alsof alle 128 bits randomized zijn, wat niet het geval is, en er is geen vermelding naar een meer authoratieve bron.

    Het kan dat het van het v1 naar v4 algoritme verandert is, maar v1 was uniek, mits een uniek genummerd hardware deel (netwerkkaart) aanwezig was. Ik ken met name het OSF v1 schema dat in Unix standaarden staat, en weet waarom het verandert is naar v4, maar weet de precieze inhoud van v4 niet.

    Er is natuurlijk een risico dat het buurjongetje jouw mac heeft ingesteld om zijn download quotum te vermijden :-)

Page 1 of 2 1 2 LastLast

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •