public Rabin_Cryptosystem(string[] args) { InitializeComponent(); mainBar = new ProgressBarForManyProcesses(progressBar1); imageList1.Images.Add(".publicKey", Properties.Resources.PublicKey); imageList1.Images.Add(".privateKey", Properties.Resources.PrivateKey); imageList1.Images.Add(".encrypted", Properties.Resources.Encrypted); foreach (string fileName in args) { string extention; try { extention = Path.GetExtension(fileName); switch (extention) { case (".publicKey"): case (".privateKey"): AddFileItemToListView(fileName, listKeys, imageList1); break; default: AddFileItemToListView(fileName, listFiles, imageList1); break; } } catch { } } }
private async void decryptToolStripMenuItem_Click(object sender, EventArgs e) { if (rab == null) { MessageBox.Show("Не выбран закрытый ключ", "", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); return; } if (Path.GetExtension(listSelectedKey.Items[0].Tag.ToString()).CompareTo(".privateKey") != 0) { MessageBox.Show("Не тот ключ!\r\nВыберите закрытый ключ", "", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); return; } string folder = BrouseFolder(); if (string.IsNullOrEmpty(folder)) { return; } foreach (ListViewItem item in listFiles.SelectedItems) { if (!IsExistInDecryptItems(item)) { item.SubItems[0].Tag = rab; item.SubItems[0].Name = folder; decryptingItems.Add(item); ProgressBar pb = CreateProgressBar(item, listFiles); ReachProgressBar filesBar = new ReachProgressBar(pb); filesBar.Tag = pb.Name; mainBar.AddProcess(filesBar); } else { MessageBox.Show($"Файл с именем: {item.Text}\r\nуже добавлен в очередь", "", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); return; } } if (decryptingItems.Count != listFiles.SelectedItems.Count) { return; } var progress = new Progress <ProgressInfo>(); progress.ProgressChanged += mainBar.Apdate; while (decryptingItems.Count > 0) { string decryptPath = decryptingItems[0].SubItems[0].Name + "\\" + Path.GetFileNameWithoutExtension(decryptingItems[0].Text); ReachProgressBar filesBar = mainBar.Processes.OfType <ReachProgressBar>().FirstOrDefault(q => (string)q.Tag == (string)decryptingItems[0].Tag); if (Path.GetExtension(decryptingItems[0].Tag.ToString()).CompareTo(".encrypted") != 0) { MessageBox.Show("Невозможно расшифровать файл " + decryptingItems[0].Text + "\n\rФайл не содержит расширение \".encrypted\"", "", MessageBoxButtons.OK, MessageBoxIcon.Error); listFiles.Controls.Remove(listFiles.Controls.OfType <ProgressBar>().FirstOrDefault(q => q.Name == (string)decryptingItems[0].Tag)); decryptingItems.Remove(decryptingItems[0]); mainBar.RemoveProcess(filesBar); continue; } progress.ProgressChanged += filesBar.Reach; try { await((RabinLib.Rabin)decryptingItems[0].SubItems[0].Tag).DecryptAsync(decryptingItems[0].Tag.ToString(), decryptPath, progress); } catch { MessageBox.Show( $"{decryptingItems[0].Text} Невозможно раскодировать с использованием ключа {((RabinLib.Rabin)decryptingItems[0].SubItems[0].Tag).Tag.ToString()}", "", MessageBoxButtons.OK, MessageBoxIcon.Error); progress.ProgressChanged -= filesBar.Reach; listFiles.Controls.Remove(listFiles.Controls.OfType <ProgressBar>().FirstOrDefault(q => q.Name == (string)decryptingItems[0].Tag)); decryptingItems.Remove(decryptingItems[0]); mainBar.RemoveProcess(filesBar); continue; } progress.ProgressChanged -= filesBar.Reach; listFiles.Controls.Remove(listFiles.Controls.OfType <ProgressBar>().FirstOrDefault(q => q.Name == (string)decryptingItems[0].Tag)); ListFilesRemoveItem(decryptingItems[0]); decryptingItems.Remove(decryptingItems[0]); AddFileItemToListView(decryptPath, listFiles, imageList1); } mainBar.Apdate(this, null); if (encryptingItems.Count == 0 && decryptingItems.Count == 0) { mainBar = new ProgressBarForManyProcesses(progressBar1, new List <ReachProgressBar>()); } }
public GenKey(Rabin_Cryptosystem form) { mainBar = form.mainBar; baseForm = form; InitializeComponent(); }