/// <summary> /// Кнопка Сгенерировать /// </summary> private void generateButton_Click(object sender, EventArgs e) { if (comboBox1.SelectedIndex < 0 || comboBox2.SelectedIndex < 0) { MessageBox.Show("Не выбраны алгоритмы для генерации ключей!", "Предупредение", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } key1 = KeyGenerator2.GenerateKey((KeyTypes)Enum.Parse(typeof(KeyTypes), String.Format("{0}", comboBox1.SelectedIndex))); key2 = KeyGenerator2.GenerateKey((KeyTypes)Enum.Parse(typeof(KeyTypes), String.Format("{0}", comboBox2.SelectedIndex))); textBox1.Text = key1.KeyValue; textBox2.Text = key2.KeyValue; saveButton.Visible = true; }
/// <summary> /// Печать ключей в файл /// </summary> /// <param name="fname">Файл для вывода результатов</param> /// <remarks>Генерируется файл с форматированной строкой для конфигурации веб-приложения machineKey</remarks> public static void PrintKeysToFile(KeyData valKey, KeyData desKey, string fname) { StreamWriter file = new StreamWriter(fname, false, Encoding.UTF8); file.WriteLine(String.Format("<machineKey validationKey=\"{0}\" decryptionKey=\"{1}\" validation=\"{2}\" decryption=\"{3}\" />", valKey.KeyValue, desKey.KeyValue, GetAlgorithmName(valKey.Type), GetAlgorithmName(desKey.Type))); file.Close(); }
/// <summary> /// Генерация случайного ключа для приложения /// </summary> /// <param name="type">Тип ключа</param> /// <returns>Возвращает данные ключа и сам ключ</returns> public static KeyData GenerateKey(KeyTypes type) { int len = GetKeyLenForType(type); byte[] buff = new byte[len / 2]; RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider(); rng.GetBytes(buff); StringBuilder sb = new StringBuilder(len); for (int i = 0; i < buff.Length; i++) sb.Append(string.Format("{0:X2}", buff[i])); KeyData res = new KeyData(); res.KeyValue = sb.ToString(); res.Length = len; res.Type = type; return res; }