using System.Security.Cryptography;
public static void Main()
string key=KeyGenerator.GetUniqueKey("V9lNRDBFapXO433Nkd0soaQN1PSmnnTVyFkJFmKrpGe2vh7GvtZtnTamFmhP2lsCaLSnstPDKEULpl06".Length);
Console.WriteLine("Token - " + key);
public class KeyGenerator
internal static readonly char[] chars =
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890".ToCharArray();
public static string GetUniqueKey(int size)
byte[] data = new byte[4*size];
using (RNGCryptoServiceProvider crypto = new RNGCryptoServiceProvider())
StringBuilder result = new StringBuilder(size);
for (int i = 0; i < size; i++)
var rnd = BitConverter.ToUInt32(data, i * 4);
var idx = rnd % chars.Length;
result.Append(chars[idx]);
return result.ToString();
public static string GetUniqueKeyOriginal_BIASED(int size)
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890".ToCharArray();
byte[] data = new byte[size];
using (RNGCryptoServiceProvider crypto = new RNGCryptoServiceProvider())
StringBuilder result = new StringBuilder(size);
result.Append(chars[b % (chars.Length)]);
return result.ToString();