Generando valores únicos en .NET

Hace poco en el trabajo estuve metido en un proyecto en que la mayor parte de la información a guardar en la base de datos debería estar cifrada, y en algunos casos guardadas con valores que luego deberían ser identificadores. Y para estos identificadores obviamente tenía que disponer de valores únicos en toda la base de datos. Para lograr esta tarea usé algunas librerías de .NET con C# y os dejo algunos ejemplos aquí por si los necesitaréis en algún momento.

Forma 1:

String s1 = Guid.NewGuid().ToString();
String s2 = Guid.NewGuid().Tostring(«N»);
String s3 = Guid.NewGuid().ToString(«P»);
String s3 = Guid.NewGuid().ToString(«D»);

Forma 2:

String s1 = System.IO.Path.GetRandomeFileName();
String s2 = System.IO.Path.ChangeExtension(System.IO.Path.GetRandomFileName(),null);

Comparación de las dos formas:

  1. La forma 1 genera al menos 32 caracteres (0-9 y a-f) solamente. Sería bueno por ejemplo para valores únicos en toda una base de datos.
  2. La forma 2 genera al menos 8 caracteres (0-9 y a-z). Sería bueno para Captcha, y bases de datos más pequeñas porque podían existir duplicados.