Cryptographically Random Unique String

15 08 2007

Looking for a way to create a Random Password Generator, I came across the following code written by Peter Bromberg (I thought to post it here in case it saves someone some time). This code will generate a cryptographically random unique string of any length you want.

Ah! BTW, I’ve made a very small modification to the original code

using System.Security.Cryptography;
using System.Text;
 
namespace UniqueKey
{
    public class KeyGenerator
    {
 
        public string GetUniqueKey()
        {
 
            int maxSize = 8;
            char[] chars = new char[62];
 
            chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890".ToCharArray();
            byte[] data = new byte[1];
 
            RNGCryptoServiceProvider crypto = new RNGCryptoServiceProvider();
            crypto.GetNonZeroBytes(data);
            data = new byte[maxSize];
            crypto.GetNonZeroBytes(data);
            StringBuilder result = new StringBuilder(maxSize);
 
            foreach (byte b in data)
            {
                result.Append(chars[b % (chars.Length - 1)]);
            }
 
            return result.ToString();
        }
    }
}

Thanks Peter for the code!






LiveSTRONG