我试图通过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();
}
}
答案 0 :(得分:0)
您可以使用this answer检索最小值和最大值之间的值。您应该使用它来首先生成密钥中的字符数量。
您也可以使用它来生成随机字符(使用0..26范围内的索引)。目前,您的关键字符生成有些偏差(因为模数运算符使得索引较低的字符比较高的索引字符更有可能。