【问题标题】: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为什么我的价值为 0。我已经对其进行了调试,发现我的价值为 0。此外,当我存储到数据库时,它也存储 0
【发布时间】:2017-08-17 00:30:04
【问题描述】:

我正在尝试使用 RNGCryptoServiceProvider 生成随机数,但是我得到了一些 o(Zero) 作为回报

private int generatePassword()
{

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

    }

}

【问题讨论】:

  • 我不太清楚为什么在字节数组上调用ToString。它将返回类的名称:System.Byte[]。你打算如何获得价值?请描述你的代码背后的想法
  • 您的编辑没有帮助 - 您现在只是在生成 不可编译 代码。相反,请花一些时间在您的问题中创建一个minimal reproducible example 和edit。最好在编译器而不是浏览器前完成。

标签: c# asp.net random rngcryptoserviceprovider


【解决方案1】:

也许你应该看看这个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();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-02
    相关资源
    最近更新 更多