Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Re: Re: Use time() to create unique ID

by sauoq (Abbot)
on Sep 16, 2003 at 23:22 UTC ( [id://291989]=note: print w/replies, xml ) Need Help??


in reply to Re: Use time() to create unique ID
in thread Use time() to create unique ID

You may be fooling yourself with your ID length of 128. On many platforms, the limiting factor is the size of the seed, which is often 32 bits. Running continuously, your code will produce duplicate keys after producing about 2^32/128 of them. (And there is no guarantee that you wouldn't produce a duplicate before that.) On subsequent runs, you have essentially the same problem. Random numbers would be bad enough. Pseudo random numbers create additional problems.

-sauoq
"My two cents aren't worth a dime.";

Replies are listed 'Best First'.
Re: Re: Re: Use time() to create unique ID
by blue_cowdawg (Monsignor) on Sep 16, 2003 at 23:59 UTC

        You may be fooling yourself with your ID length of 128. On many platforms, the limiting factor is the size of the seed, which is often 32 bits.
    If you are attempting to start an argument with me, you failed. I agree with you. This is where some very serious testing needs to be done on any solution where you are attempting to produce unique keys of any sort. Especially where real "randomness" is required. Hence why elsewhere in this thread I make reference to using system entropy as they do in PGP and GNUpg and other cryptographic products.

    In 25 years of programming I have yet to see a truly random random number generator over a sufficiently large data set without the use of some external influence on the numbers being generated.

    This of course gets back to the basic premise that using time() and friends to produce the id may not be very ideal even for the simplest of application.

    However, I stand by my opinion that the degree of randomness you need is part of the design criteria you need to develop in your program specification and the criticality it has in relationship to the program you are writing and the data or transactions you are trying to protect. If I am generating unique IDS for sessions dealing with a guest book application (OK... so I'm exaggerating) then I am not going to worry too much about how random the key generation is. On the other hand if I am protecting national security data where lives are on the line then I am going to look to somebody like the NSA for guidance as to what the "latest and greatest" crypto algorithm is.


    Peter L. Berghold -- Unix Professional
    Peter at Berghold dot Net
       Dog trainer, dog agility exhibitor, brewer of fine Belgian style ales. Happiness is a warm, tired, contented dog curled up at your side and a good Belgian ale in your chalice.
      If you are attempting to start an argument with me, you failed. I agree with you.

      I wasn't "attempting to start an argument" with anyone. I was pointing out a conceptual misunderstanding that you displayed both with your code and with the assertion you made in the post I was replying to: "However the longer the key the more likely it is to be unique."

      As your code uses a pseudorandom generator, the length of the "key" isn't the limiting factor... the length of the seed is.

      Hence why elsewhere in this thread I make reference to using system entropy as they do in PGP and GNUpg and other cryptographic products.

      And, elsewhere, I point out that relying on randomness for creating unique identifiers is a poor approach altogether.

      There are two points to be made here. 1) Using real random numbers rather than pseudorandom numbers doesn't fix the problem with relying on randomness for generating unique IDs. 2) Using a longer "key" length is not at all guaranteed to reduce the number of duplicates you will get.

      I was addressing #2 in this thread and #1 in the other.

      -sauoq
      "My two cents aren't worth a dime.";
      

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://291989]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (2)
As of 2024-04-26 04:15 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found