views:

1060

answers:

5

Is there a command line tool for unix and windows that uses the same algorithm to create GUIDs for both platforms?

A: 

I don't know if there is a command line tool available, but you could simply write one in C# (it should run with Mono):

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine(System.Guid.NewGuid().ToString());
    }
}

You can easily modify the program to change formatting of the GUID, copy it to the clipboard or whatever fits your need.

0xA3
Well I need to be sure they use the same algorithm to generate the GUID, and since Mono is not officially MS, I don't know if they use the same algorithm, do you have any specs about this?
Robert Gould
Mono probably might use a different implementation but you could run the tool using Mono on both Windows and Unix/Linux. Just because I'm curious: Why do you need the same algorithm on both platforms? The GUID will still be unique because one field in the GUID specifies the algorithm used.
0xA3
The whole idea of a GUID is that it's globally unique if the algorithm and random number generator are up to par. I think you'd be safe with different algorithms generating GUIDs.
Wedge
Wedge got it right. The GUID includes a version marker (which specifies which algorithm is used). This *ensures* that no two GUIDs with different algorithm can ever be the same. And if the algorithm matches, then it's already tailored to ensure that no two GUIDs are the same.
Joey
A: 

There are tons of online apps to do it.

If you are using PHP, you can use the uniqid function.

I found a pure Java program to do it at http://jug.safehaus.org/. That should work anywhere you can install Java.

T.E.D.
+1  A: 

Something useful to know:

The byte order of Guid.ToByteArray() in C# and the SQL Server GUID type is:

        { 3, 2, 1, 0, 5, 4, 7, 6, 8, 9, 10, 11, 12, 13, 14, 15 };

An Oracle GUID created using SYS_GUID() and stored as RAW[16] is ordered:

        { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };

You may find this online GUID converter handy. I'm not sure if the source is available for your own use, but it shouldn't be too hard to figure it out.

crb
Shouldn't the string representation be the same, regardless of underlying byte order?
Joey
Yes, but this is just a handy tip offered in case you ever have to deal with a GUID in byte order.
crb
A: 

In XP you can use the following in the command window: uuidgen.exe

anagels
A: 

'e2fsprogs' project maintain uuidgen utility.

http://e2fsprogs.sourceforge.net/

So it already available on Linux.

For Windows I recommend install Cygwin, 'e2fsprogs' package available there!

Just run under Windows or Linux:

  $ uuidgen -r  # random based UUID/GUID
  $ uuidgen -t  # time based UUID/GUID
gavenkoa