Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在授权类文件中随机生成数字或字符_C#_.net_Random - Fatal编程技术网

C# 如何在授权类文件中随机生成数字或字符

C# 如何在授权类文件中随机生成数字或字符,c#,.net,random,C#,.net,Random,我需要帮助创建一个类文件,该类文件随机生成10个字符,0-9,a-Z。通过生成PIN,它将创建一个授权工作流,以允许用户验证应用程序。此编号将被定向到配置文件,而不是URL。用户通过一个身份验证过程,不会回调URL,而是会有一个只生成pin的页面。随机生成的PIN码和访问码将存储在数据库表中 这就是我到目前为止所拥有的,如果这段代码不起作用,我需要做些什么才能让它变得更好。我还知道RNGCryptoServiceProvider类适合于强随机数生成器,但我不确定如何将其合并到我的代码中 我还在数

我需要帮助创建一个类文件,该类文件随机生成10个字符,0-9,a-Z。通过生成PIN,它将创建一个授权工作流,以允许用户验证应用程序。此编号将被定向到配置文件,而不是URL。用户通过一个身份验证过程,不会回调URL,而是会有一个只生成pin的页面。随机生成的PIN码和访问码将存储在数据库表中

这就是我到目前为止所拥有的,如果这段代码不起作用,我需要做些什么才能让它变得更好。我还知道RNGCryptoServiceProvider类适合于强随机数生成器,但我不确定如何将其合并到我的代码中

我还在数据库字段中使用get set。这是RESTAPI的最佳方法吗?我对API不是很熟悉。如果对我的代码有任何帮助,我将不胜感激

using System;

namespace AuthorizationPIN
{
using System;
using System.Text;


class RandomNumberSample
{
    static void Main(string[] args)
    {
        RandomGenerator generator = new RandomGenerator();
                    string str = generator.RandomString(10, false);
        Console.WriteLine($"Random string of 10 chars is {str}");



        Console.ReadKey();
    }
}
public class AuthorizationPIN
{
    public int Id { get; set; }
    public string AccessCode { get; set; }
    public string PIN { get; set; }

}
public class RandomGenerator
{
    // Generate a random number between two numbers  
    public int RandomNumber(int min, int max)
    {
        Random random = new Random();
        return random.Next(min, max);
    }

    // Generate a random string with a given size  
    public string RandomString(int size, bool upperCase)
    {
        StringBuilder builder = new StringBuilder();
        Random random = new Random();
        char ch;
        for (int i = 0; i < size; i++)
        {
            ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26   *                random.NextDouble() + 65)));
              builder.Append(ch);
        }
        if (upperCase)
            return builder.ToString().ToUpper();
        return builder.ToString();
    }

    // Generate a random password  

}
使用系统;
命名空间授权PIN
{
使用制度;
使用系统文本;
类随机数示例
{
静态void Main(字符串[]参数)
{
RandomGenerator=新的RandomGenerator();
string str=generator.RandomString(10,false);
WriteLine($“10个字符的随机字符串是{str}”);
Console.ReadKey();
}
}
公共类授权PIN
{
公共int Id{get;set;}
公共字符串访问代码{get;set;}
公共字符串PIN{get;set;}
}
公共类随机发生器
{
//在两个数字之间生成一个随机数
公共整数随机数(最小整数,最大整数)
{
随机=新随机();
返回random.Next(最小值、最大值);
}
//生成给定大小的随机字符串
公共字符串RandomString(int大小,bool大写)
{
StringBuilder=新的StringBuilder();
随机=新随机();
char ch;
对于(int i=0;i
有很多方法可以满足您的要求,一种方法是,通过良好的分发,可以做到以下几点:

public string RandomString(int size, bool upperCase)
{
    using (var r = new RNGCryptoServiceProvider())
    {
        StringBuilder builder = new StringBuilder();
        var data = new byte[size];
        r.GetNonZeroBytes(data);

        var b = @"0123456789abcdifghijklmnopqrstuvwxwzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdifghijklmnopqrstuvwxwzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdifghijklmnopqrstuvwxwzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdifghijklmnopqrstuvwxwzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456";

        for (int i = 0; i < data.Length; i++)
        {
            var c = b[data[i]];
            builder.Append((upperCase) ? char.ToUpperInvariant(c) : c);
        }
        return builder.ToString();
    }
}
publicstringrandomstring(int大小,bool大写)
{
使用(var r=new RNGCryptoServiceProvider())
{
StringBuilder=新的StringBuilder();
变量数据=新字节[大小];
r、 获取非零字节(数据);
变量b=@“0123456789ABCDIFGHIJKLMNOPQRSTUVWZABCDFGHIJKLMNOPQRSTUVWXYZ012345678ABCDIFGHIJKLMNOPQRSTUVWWZABCDFGHIJKLMNOPQRSTUVWXYZ012345678ABCDIFGHIJJKLMNOPQRSTUVWZABCDFGHIJKLMNOPQRSTUVWZ0123456789 ABCDIFGHIJKLMNOPQRSTUVWWWZZ12345686”;
for(int i=0;i
“这段代码行得通吗”>>好吧,你试过了吗?行得通吗?快速看一眼,我觉得你的
随机生成器
可能会带来一些麻烦,因为你为生成的每个值创建了一个新的
随机
实例,这可能会有问题(特别是经常/频繁调用时).检查:@sidprasher.在该链接上,就是这样,这就是我需要的全部代码,还是我需要添加更多的代码?与@bassfaders相关评论:您只需要大写字母A-Z吗?