【问题标题】:Generating random keys in C#在 C# 中生成随机密钥
【发布时间】:2015-11-12 17:12:52
【问题描述】:

我正在用 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();
    }

在我的 MainClass 类中,我有 Main 方法,其中包含:

Console.WriteLine(V.GenerateKey(10));

但它在编译时不会产生任何东西,只是一个空白控制台,我还是 C# 的新手,所以请不要被任何错误冒犯。

【问题讨论】:

  • 你的意思是 i 不是 n 在 while 循环中?
  • 您希望密钥有多长?你有指定这个吗?目前循环上升到key.length,开头为0。
  • sorry yes n 在 while 循环中应该是 i @SanjayManohar
  • 学习调试。设置断点,单步执行代码并检查相关变量。
  • 为什么不直接创建一个所需长度的字节数组并让 .GetBytes 一次性完成所有工作?

标签: c# random


【解决方案1】:

试试

 while (i < length)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-10
    • 2015-09-27
    • 2014-06-29
    • 1970-01-01
    • 1970-01-01
    • 2012-11-15
    • 2014-07-20
    • 1970-01-01
    相关资源
    最近更新 更多