Isaac is correct.  Date.now is pretty guessable from a security standpoint
and so is Math.random.  I was suggesting it for cases where that's not an
issue.
On Aug 6, 2012 8:11 PM, "Isaac Schlueter" <i...@izs.me> wrote:

> That looks like I was responding to Mark Hahn's commnet about sorting; I
> wasn't.
>
> Of course it's fine to put the date on there *also*, but my point is
> merely that (Date.now() + Math.random()) is not sufficiently random to
> call it a uuid.
>
> On Mon, Aug 6, 2012 at 6:09 PM, Isaac Schlueter <i...@izs.me> wrote:
> > Math.random() is not cryptographically secure entropy, and Date.now()
> > is extremely guessable.  If you are worried about someone *wanting* to
> > cause collisions, then that's not so great.
> >
> > If you don't care about the IETF, and you are writing your program in
> > Node, then the simplest approach is something like:
> >
> > var uuid = crypto.randomBytes(24).toString('base64')
> >
> > To do it asynchronously (since the crypto ops are a little slow):
> >
> > crypto.randomBytes(24, function (er, bytes) {
> >   var uuid = bytes.toString('base64')
> > })
> >
> > Make the number bigger or smaller to adjust the amount of entropy.
> >
> > Note that IETF uuids are "only" 16 bytes of entropy, so if you do want
> > IETF-style uuids, you can do this:
> >
> > var uuid = crypto.randomBytes(16).toString('hex')
> > var ietfStyle = uuid.replace(/^(.{8})(.{4})(.{4})(.{4})(.{12})$/,
> > '$1-$2-$3-$4-$5')
> >
> > I'm going to be moving npm to just use base64 random bytes for salt
> > eventually, just never got around to it.
> >
> >
> > On Mon, Aug 6, 2012 at 4:02 PM, Mark Hahn <m...@hahnca.com> wrote:
> >> The advantage of starting off with the time is that the UUIDs sort by
> order
> >> generated which is useful for DB ids.  Coding a time into base 36 is a
> bit
> >> dangerous though as it may not sort right at some time in the future.
>  That
> >> time may be centuries from now, not sure.  Sorting by hex is known to
> be far
> >> in the future.
> >>
> >>
> >> On Mon, Aug 6, 2012 at 3:56 PM, Mark Hahn <m...@hahnca.com> wrote:
> >>>
> >>> FWIW, here is the code to exactly match couchdb.
> >>>
> >>> UUID = -> '0' + (new Date().getTime() * 1e3).toString(16) +
> >>> Math.floor(Math.random() * 1e18).toString(16)
> >>>
> >>>
> >>> On Mon, Aug 6, 2012 at 3:43 PM, Rick Waldron <waldron.r...@gmail.com>
> >>> wrote:
> >>>>
> >>>> On Mon, Aug 6, 2012 at 6:28 PM, Mark Hahn <m...@hahnca.com> wrote:
> >>>>>
> >>>>> That isn't a hack.  It is almost a copy of what couchdb offers.  I
> use
> >>>>> it all the time.
> >>>>
> >>>>
> >>>> One is an IETF (RFC) and the other isn't.
> >>>>
> >>>> http://www.ietf.org/rfc/rfc4122.txt
> >>>>
> >>>>>
> >>>>>
> >>>>> On Mon, Aug 6, 2012 at 2:17 PM, Ted Young <t...@radicaldesigns.org>
> >>>>> wrote:
> >>>>>>
> >>>>>> Thanks for the feedback, glad to know I found the defacto solution.
> >>>>>> Tim, that's funny, your hack is more or less what I started with,
> but I
> >>>>>> became suspicious that it was too easy somehow.  Maybe I'll switch
> back to
> >>>>>> that if file-size/performance becomes an issue (which it won't).
> >>>>>>
> >>>>>> Ted
> >>>>>>
> >>>>>> On Aug 6, 2012, at 8:27 PM, Tim Caswell <t...@creationix.com> wrote:
> >>>>>>
> >>>>>> Depending on how strict your requirements are, I often just use:
> >>>>>>
> >>>>>>  Date.now.toString(36) + "-" + (Math.random() *
> >>>>>> 0x10000000).toString(36)
> >>>>>>
> >>>>>> Date.now is unique every ms and Math.random has a keyspace of 2^32,
> so
> >>>>>> collisions are statistically impossible in most practical
> >>>>>> applications.
> >>>>>>
> >>>>>>
> >>>>>> On Mon, Aug 6, 2012 at 1:01 PM, Rick Waldron <
> waldron.r...@gmail.com>
> >>>>>> wrote:
> >>>>>>
> >>>>>>
> >>>>>> On Monday, August 6, 2012 at 1:38 PM, Martin Cooper wrote:
> >>>>>>
> >>>>>> On Mon, Aug 6, 2012 at 10:28 AM, Ted Young <t...@radicaldesigns.org>
> >>>>>> wrote:
> >>>>>>
> >>>>>> Hey y'all,
> >>>>>>
> >>>>>> So, I have a need for global unique id's. Googling about, I've found
> >>>>>> the
> >>>>>> following implementations that seem decent:
> >>>>>>
> >>>>>> https://github.com/broofa/node-uuid
> >>>>>>
> >>>>>>
> >>>>>> FWIW, this is the package that npm uses.
> >>>>>>
> >>>>>> +1
> >>>>>>
> >>>>>> I've been using Robert Keiffer's impl in projects since before it
> was
> >>>>>> even
> >>>>>> on npm—I consider it a "go to"
> >>>>>>
> >>>>>> Rick
> >>>>>>
> >>>>>>
> >>>>>> --
> >>>>>> Martin Cooper
> >>>>>>
> >>>>>>
> >>>>>> https://gist.github.com/1308368
> >>>>>>
> >>>>>> Not really sure why I would pick one over the other (besides file
> >>>>>> size), or
> >>>>>> if there are any js-specific issues I should be aware of. Any
> advice?
> >>>>>>
> >>>>>> Cheers,
> >>>>>>
> >>>>>> Ted
> >>>>>>
> >>>>>> --
> >>>>>> Job Board: http://jobs.nodejs.org/
> >>>>>> Posting guidelines:
> >>>>>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
> >>>>>> You received this message because you are subscribed to the Google
> >>>>>> Groups "nodejs" group.
> >>>>>> To post to this group, send email to nodejs@googlegroups.com
> >>>>>> To unsubscribe from this group, send email to
> >>>>>> nodejs+unsubscr...@googlegroups.com
> >>>>>> For more options, visit this group at
> >>>>>> http://groups.google.com/group/nodejs?hl=en?hl=en
> >>>>>>
> >>>>>>
> >>>>>> --
> >>>>>> Job Board: http://jobs.nodejs.org/
> >>>>>> Posting guidelines:
> >>>>>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
> >>>>>> You received this message because you are subscribed to the Google
> >>>>>> Groups "nodejs" group.
> >>>>>> To post to this group, send email to nodejs@googlegroups.com
> >>>>>> To unsubscribe from this group, send email to
> >>>>>> nodejs+unsubscr...@googlegroups.com
> >>>>>> For more options, visit this group at
> >>>>>> http://groups.google.com/group/nodejs?hl=en?hl=en
> >>>>>>
> >>>>>>
> >>>>>> --
> >>>>>> Job Board: http://jobs.nodejs.org/
> >>>>>> Posting guidelines:
> >>>>>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
> >>>>>> You received this message because you are subscribed to the Google
> >>>>>> Groups "nodejs" group.
> >>>>>> To post to this group, send email to nodejs@googlegroups.com
> >>>>>> To unsubscribe from this group, send email to
> >>>>>> nodejs+unsubscr...@googlegroups.com
> >>>>>> For more options, visit this group at
> >>>>>> http://groups.google.com/group/nodejs?hl=en?hl=en
> >>>>>>
> >>>>>>
> >>>>>> --
> >>>>>> Job Board: http://jobs.nodejs.org/
> >>>>>> Posting guidelines:
> >>>>>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
> >>>>>> You received this message because you are subscribed to the Google
> >>>>>> Groups "nodejs" group.
> >>>>>> To post to this group, send email to nodejs@googlegroups.com
> >>>>>> To unsubscribe from this group, send email to
> >>>>>> nodejs+unsubscr...@googlegroups.com
> >>>>>> For more options, visit this group at
> >>>>>> http://groups.google.com/group/nodejs?hl=en?hl=en
> >>>>>>
> >>>>>>
> >>>>>> --
> >>>>>> Job Board: http://jobs.nodejs.org/
> >>>>>> Posting guidelines:
> >>>>>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
> >>>>>> You received this message because you are subscribed to the Google
> >>>>>> Groups "nodejs" group.
> >>>>>> To post to this group, send email to nodejs@googlegroups.com
> >>>>>> To unsubscribe from this group, send email to
> >>>>>> nodejs+unsubscr...@googlegroups.com
> >>>>>> For more options, visit this group at
> >>>>>> http://groups.google.com/group/nodejs?hl=en?hl=en
> >>>>>
> >>>>>
> >>>>> --
> >>>>> Job Board: http://jobs.nodejs.org/
> >>>>> Posting guidelines:
> >>>>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
> >>>>> You received this message because you are subscribed to the Google
> >>>>> Groups "nodejs" group.
> >>>>> To post to this group, send email to nodejs@googlegroups.com
> >>>>> To unsubscribe from this group, send email to
> >>>>> nodejs+unsubscr...@googlegroups.com
> >>>>> For more options, visit this group at
> >>>>> http://groups.google.com/group/nodejs?hl=en?hl=en
> >>>>
> >>>>
> >>>> --
> >>>> Job Board: http://jobs.nodejs.org/
> >>>> Posting guidelines:
> >>>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
> >>>> You received this message because you are subscribed to the Google
> >>>> Groups "nodejs" group.
> >>>> To post to this group, send email to nodejs@googlegroups.com
> >>>> To unsubscribe from this group, send email to
> >>>> nodejs+unsubscr...@googlegroups.com
> >>>> For more options, visit this group at
> >>>> http://groups.google.com/group/nodejs?hl=en?hl=en
> >>>
> >>>
> >>
> >> --
> >> Job Board: http://jobs.nodejs.org/
> >> Posting guidelines:
> >> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
> >> You received this message because you are subscribed to the Google
> >> Groups "nodejs" group.
> >> To post to this group, send email to nodejs@googlegroups.com
> >> To unsubscribe from this group, send email to
> >> nodejs+unsubscr...@googlegroups.com
> >> For more options, visit this group at
> >> http://groups.google.com/group/nodejs?hl=en?hl=en
>
> --
> Job Board: http://jobs.nodejs.org/
> Posting guidelines:
> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
> You received this message because you are subscribed to the Google
> Groups "nodejs" group.
> To post to this group, send email to nodejs@googlegroups.com
> To unsubscribe from this group, send email to
> nodejs+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/nodejs?hl=en?hl=en
>

-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to nodejs@googlegroups.com
To unsubscribe from this group, send email to
nodejs+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

Reply via email to