Search code examples
c#asp.netrandomrngcryptoserviceprovider

Why I am getting 0 in value. I have debugged it and found I am getting 0 in value. Also when i am storing to database it also store 0


I am trying to generate random number using RNGCryptoServiceProvider, but some how I am getting o(Zero) in return

private int generatePassword()
{

    using (RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider())
    {
        string value = string.Empty;
        byte[] randomnumber = new byte[10000];
        rng.GetBytes(randomnumber);
       return randomnumber;

    }

}

Solution

  • Perhaps you should take a look at this link here

    dotNetFiddle

    static string RandomString(int length)
    {
        const string valid = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
        StringBuilder res = new StringBuilder();
    
        using (RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider())
        {
            byte[] uintBuffer = new byte[sizeof(uint)];
    
            while (length-- > 0)
            {
                rng.GetBytes(uintBuffer);
                uint num = BitConverter.ToUInt32(uintBuffer, 0);
                res.Append(valid[(int)(num % (uint)valid.Length)]);
            }
        }
    
        return res.ToString();
    }