Introduction

GUID Generator

GUID Generator is a simple program that generates any number of GUID identifiers.

The program is available in two versions: as windows GUI application (GuidGenW.exe) and console application (GuidGen.exe) that runs from the command line.

Both applications are standalone executables and do not require installation of any additional runtime libraries, frameworks, etc.

Both programs are completely portable, they do not use the registry and do not change any system settings.

What is GUID?

GUID - Globally Unique Identifier - is a 16 byte (128-bit) value usually presented as a sequence of hexadecimal numbers, divided by hyphens into five groups:

Group NoBytesBits
1432
2216
3216
4216
5648

Example: 79237765-A862-405A-BA02-1F17BD783624

GUID is a 128-bit value, so there are 2128 (340 282 366 920 938 463 463 374 607 431 768 211 456) possible combinations.

The possibility of generate two identical GUIDs is so small that they are commonly used as identifiers of the various resources: operating system objects, unique keys in database tables, disk partitions and many more.

If you need a very strong password, GUID is a good candidate.

GUID defined in a several programming languages

GUID stucture (C++)
typedef struct _GUID {
  DWORD Data1;
  WORD  Data2;
  WORD  Data3;
  BYTE  Data4[8];
} GUID;
TGUID record (Delphi)
TGUID = record
  D1: Cardinal;
  D2: Word;
  D3: Word;
  D4: array[0..7] of Byte;
end;
TGuid record (Free Pascal)
TGuid = packed record
  case integer of
     1 : (
          Data1 : DWord;
          Data2 : word;
          Data3 : word;
          Data4 : array[0..7] of byte;
         );
     2 : (
          D1 : DWord;
          D2 : word;
          D3 : word;
          D4 : array[0..7] of byte;
         );
     3 : ( { uuid fields according to RFC4122 }
          time_low : dword;	            // The low field of the timestamp
          time_mid : word;                  // The middle field of the timestamp
          time_hi_and_version : word;       // The high field of the timestamp multiplexed with the version number
          clock_seq_hi_and_reserved : byte; // The high field of the clock sequence multiplexed with the variant
          clock_seq_low : byte;             // The low field of the clock sequence
          node : array[0..5] of byte;       // The spatially unique node identifier
         );
end;
Visual Basic 6
Private Type GUID
    PartOne As Long
    PartTwo As Integer
    PartThree As Integer
    PartFour(7) As Byte
End Type
Python
class GUID(Structure):
    _fields_ = [("Data1", DWORD),
                ("Data2", WORD),
                ("Data3", WORD),
                ("Data4", BYTE * 8)]

The first two bytes of the Data4 member (D4 field) form the fourth group.