0
我正嘗試通過c#生成一個加密字母鍵不再比以前輸入的字符串。 例如我有一個方法CharCount計算字符並將其傳遞給屬性CI。然後在另一個類中有一個GenerateKey方法。我通過Ciph.Generatekey(CI)生成密鑰,CI給出了原始字符串的計數,但這裏的PROBLEM是我希望它生成一個隨機長度直到CI值,而不是它在CI中生成字符串長度。C#生成不超過字符串大小的加密密鑰
項目類別:
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();
}
}
你的代碼中有一些明顯的編程錯誤,主要你應該記住,你不必分配一個值直接指向一個變量,'encrypt.GetNonZeroBytes(data);'後面是'data = new byte [maxSize];'當然是一個嚴重的錯誤。 –