C#生成加密密钥不超过字符串大小

时间:2015-11-15 13:36:44

标签: c# cryptography

我试图通过c#生成加密字母键,不超过之前输入的字符串。 例如,我有一个方法CharCount计算字符并将其传递给属性CI。然后我在另一个类中有一个GenerateKey方法。我通过Ciph.Generatekey(CI)生成密钥,CI给出了原始字符串的计数,但这里的问题是我希望它生成一个随机长度,直到CI值,而只是在CI中生成字符串长度。

计划类:

 private static int CI;
    static void Main(string[] args)
    { 
        string Filecontents;
        FileHandling FH = new FileHandling();
        Ciphering Ciph = new Ciphering();
        Filecontents = FH.StreamFile();
        string CC = CharCount(Filecontents);
        bool test = int.TryParse(CC, out CI);
        Console.WriteLine(Ciph.GenerateKey(CI));
    }
public static string CharCount(string info)
        {
            StringBuilder result = new StringBuilder();
            int count = 0;
            string st = info;
            foreach (char c in st)
            {
                if (char.IsLetter(c))
                {
                    count++;
                }
            }
            result.Append(count);
            return result.ToString();
        }

加密课程:

class Ciphering
    {
        public string GenerateKey(int maxSize)
        {
            char[] chars = new char[62];
            chars =
            "abcdefghijklmnopqrstuvwxyz".ToCharArray();
            byte[] data = new byte[1];
            using (RNGCryptoServiceProvider encrypt = new RNGCryptoServiceProvider())
            {
                encrypt.GetNonZeroBytes(data);
                data = new byte[maxSize];
                encrypt.GetNonZeroBytes(data);
            }
            StringBuilder result = new StringBuilder(maxSize);
            foreach (byte c in data)
            {
                result.Append(chars[c % (chars.Length)]);
            }
            return result.ToString();
        }
    }

1 个答案:

答案 0 :(得分:0)

您可以使用this answer检索最小值和最大值之间的值。您应该使用它来首先生成密钥中的字符数量。

您也可以使用它来生成随机字符(使用0..26范围内的索引)。目前,您的关键字符生成有些偏差(因为模数运算符使得索引较低的字符比较高的索引字符更有可能。