Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.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语言生成随机密钥#_C#_Random - Fatal编程技术网

C# 用C语言生成随机密钥#

C# 用C语言生成随机密钥#,c#,random,C#,Random,我正在用c#编写一个vigenere加密程序,我想生成一个随机密钥,但我想先弄清楚这个问题 因此,在我的V类课程中,我有一个方法: class V { public static string GenerateKey(int length) { StringBuilder key = new StringBuilder(); RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();

我正在用c#编写一个vigenere加密程序,我想生成一个随机密钥,但我想先弄清楚这个问题

因此,在我的V类课程中,我有一个方法:

class V
{
    public static string GenerateKey(int length)
    {
        StringBuilder key = new StringBuilder();
        RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
        byte[] rnd = new byte[1];
        int i = 0;
        while (i < key.Length)
        {
            rng.GetBytes(rnd);
            rnd[0] %= 64;
            if (rnd[0] < 62)
            {
                ++i;
                key.Append((byte)((rnd[0] <= 9 ? '0' : rnd[0] <= 35 ? 'A' - 10 : 'a' - 36) + rnd[0]));
            }
        }
        return key.ToString();
    }
但编译后它不会产生任何结果,只是一个空白控制台,我还是C的新手,所以请不要因为任何错误而生气。

试试看

 while (i < length)
while(i

您需要达到所需的长度!(不是当前长度)

您的意思是while循环中的
i
not
n
?您希望键的长度是多长?你指定了这个吗?此时循环上升到
key.length
,开始时为0。很抱歉,while循环中的n应该是i@SanjayManoharLearn以进行调试。设置断点,逐步检查代码并检查相关变量。为什么不创建一个所需长度的字节数组,让.GetBytes一次完成所有工作?
 while (i < length)