Skip to content

Latest commit

 

History

History
165 lines (140 loc) · 5.05 KB

README.md

File metadata and controls

165 lines (140 loc) · 5.05 KB

IdentifierGenerator

NuGet Version NuGet Downloads Build GitHub License
Install dotnet tool install -g IdentifierGenerator
Update dotnet tool update -g IdentifierGenerator

IdentifierGenerator (idgen) is a .NET global tool that supports the bulk generation of various kinds of unique1 identifiers:

  • Versions 3 and 5 GUID/UUID: reproducible hashed namespace + name IDs
    • Note: use version 5 (SHA-1) over version 3 (MD5) unless compatibility is required.
  • Version 4 GUID/UUID: secure random IDs
  • Hashid: Stable, short, unique, non-sequential, insecure IDs from integer array input
  • Nano ID: secure random IDs of configurable size and alphabet
  • Xcode Storyboard/XIB IDs

It can also encode strings for 3x4 numeric keypad/phone entry. This feature was implemented for and tested on Fidelity's antiquated phone authentication system, wherein they ask for an account password to be entered on a phone keypad.

Note

1. "Uniqueness" is an inherent property of the chosen format. No ID formats are truly unique.

Examples

Run idgen --help after installing for detailed options.

Tip

Any argument that expects a number my be specified in decimal, binary (0b1001), or hex (0xabcd and ab123h) notation. Numbers may also contain digit separators (_ and ,) and arbitrary whitespace.

Generate a single v4 random GUID

idgen
0b0d5b33-b5e9-45cb-8f14-9bdab594cc98

Do the same, but upper-case it

idgen -upper
8E350BC7-FF37-4E96-A5F7-CD945C9BDC33

Generate a true base-64 encoded v4 random GUID

idgen -f base64
JWn2giJJhUePnVzrCAK8JQ==

Generate a true short v4 random GUID (base-64 with minor transformations)

idgen -f short
9lsQ5-h1nEy9uS3DMbLoeg

Generate a Hashid from a set of numbers

idgen hashid 3 100 45 11
Q0i67ixxir

Generate a Hashid from a set of numbers with a minimum ID length, salt, and alphabet

idgen hashid 3 100 45 11 -salt bojangles -a aBcDeFgHiJkLmNoPqRsTuV -s 32
BPDNPBNqkgLJVRsVaFLBsVJRVDmaeaLm

Generate Hashids of numbers 1 to 100 from stdin

seq 1 100 | idgen hashid
jR
k5
l5
...
vgm
wjR
g56

Generate 5 Nano IDs

idgen nanoid -n 5
Fm82ZL3eyabMeVAgDGF7k
LlrnWI3YrhUbQY3zHiyYc
JUExm8eTVmLjLBjVeabZd
1bNIDlndN6W~chHMDq2y9
izaokjb4E9ft6~rAgINEy

Generate a Nano ID with a custom size and alphabet

idgen nanoid -s 32 -alphabet abcdefghijklmnopqrstuvwxyz
aqmtbhpgomnpvudpmtesoooakyrrdrap

Generate a v5 SHA-1 namespace + name hashed GUID using the URL namespace and the name bojangles

idgen v5 bojangles
11de2b26-984e-56b4-aa25-b3bd28ea5ac2

Generate a v5 SHA-1 namespace + name hashed GUID using a custom namespace and the name bojangles

idgen v5 bojangles 11de2b26-984e-56b4-aa25-b3bd28ea5ac2
de9425a4-e8dd-510b-8e00-b6ac890c733a

Generate a v5 SHA-1 namespace + name hashed GUID from stdin

idgen v5 - < /usr/share/dict/words
e54b4418-5a27-5bdb-a1e8-24a89e2a8634

Generate an ID suitable for an Xcode storyboard

idgen xcode
KoW-8m-wjo

Encode a string suitable for 3x4 numeric keypad/phone entry

idgen phone "hello world"
43556*96753#

GUID Formats

For GUID/UUIDs, a number of representation formats are supported via the -f or -format

-format Description
Base64 The binary representation of the GUID encoded in base 64. This format ignores the -upper option if specified.
Short Like Base64, but with padding (==) stripped, / changed to _, and + changed to -.
N 32 digits:
00000000000000000000000000000000
D 32 digits separated by hyphens:
00000000-0000-0000-0000-000000000000
B 32 digits separated by hyphens, enclosed in braces:
{00000000-0000-0000-0000-000000000000}
P 32 digits separated by hyphens, enclosed in parentheses:
(00000000-0000-0000-0000-000000000000)
X Four hexadecimal values enclosed in braces, where the fourth value is a subset of eight hexadecimal values that is also enclosed in braces:
{0x00000000,0x0000,0x0000,{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}