My colleague and I are debating which of these methods to use for auto generating user ID\'s and post ID\'s for identification in the database:
One option uses a single
Contrary to what some people have said in the comment, a GUID generated by Guid.NewGuid() is NOT dependent on any machine-specific identifier (only type 1 GUIDs are, Guid.NewGuid() returns a type 4 GUID, which is mostly random).
As long as you don't need cryptographic security, the Random
class should be good enough, but if you want to be extra safe, use System.Security.Cryptography.RandomNumberGenerator
. For the Guid approach, note that not all digits in a GUID are random. Quote from wikipedia:
In the canonical representation,
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
, the most significant bits of N indicates the variant (depending on the variant; one, two or three bits are used). The variant covered by the UUID specification is indicated by the two most significant bits of N being 1 0 (i.e. the hexadecimal N will always be 8, 9, A, or B). In the variant covered by the UUID specification, there are five versions. For this variant, the four bits of M indicates the UUID version (i.e. the hexadecimal M will either be 1, 2, 3, 4, or 5).