private async void OpenForDecode() { try { if (string.IsNullOrEmpty(PathToDoc)) { ShowMetroMessageBox("Информация", "Загрузите файл для извлечения"); return; } CryptedText = string.Empty; SearchedText = string.Empty; TimeForDerypting = string.Empty; Stopwatch.Restart(); ShowUnderlineModel codeModel = new ShowUnderlineModel(PathToDoc); string foundedBitsInDoc = await codeModel.FindInformation(); SearchedText = SelectedCodMethod == null ? SearchedText = Converter.BinaryToString(foundedBitsInDoc) : foundedBitsInDoc; if (SelectedCodMethod != null) { EncodedText = SearchedText; SearchedText = Converter.BinaryToString(SelectedCodMethod.DeCoding(SearchedText)); } if (SelectedHashMethod != null) { if (string.IsNullOrEmpty(HashFile)) { ShowMetroMessageBox("Информация", "Нет файла с хэшем!"); return; } var isHashSame = SelectedHashMethod.VerifyHash(SearchedText, HashFile); if (!isHashSame) { ShowMetroMessageBox("Информация", "Не валидный хэш!"); return; } } if (SelectedCryptMethod != null) { CryptedText = SearchedText; if (string.IsNullOrEmpty(CryptFile)) { ShowMetroMessageBox("Информация", "Нет файла с приватным ключом!"); return; } SearchedText = SelectedCryptMethod?.Decrypt(SearchedText, CryptFile) ?? SearchedText; if (string.IsNullOrEmpty(SearchedText)) { ShowMetroMessageBox("Информация", "Ключ не подходит."); return; } } Stopwatch.Stop(); TimeForDerypting = Math.Round(Stopwatch.Elapsed.TotalSeconds, 2).ToString() + " сек."; if (SearchedText.Length > 0) { ShowMetroMessageBox("Информация", "Извлечение информации из файла " + PathToDoc.Split('\\').LastOrDefault() + " прошло успешно."); } else { ShowMetroMessageBox("Информация", "Файл " + PathToDoc.Split('\\').LastOrDefault() + " не содержит скрытой информации."); } } catch (Exception e) { ShowMetroMessageBox("Информация", e.Message + "\n " + e.InnerException + "\n" + "\n" + e.Source); } }
private async void OpenForDecode() { try { if (string.IsNullOrEmpty(PathToDoc)) { ShowMetroMessageBox("Информация", "Загрузите файл для извлечения"); return; } CryptedText = ""; SearchedText1 = ""; SearchedText = ""; ShowUnderlineModel codeModel = new ShowUnderlineModel(PathToDoc); string foundedBitsInDoc = await codeModel.FindInformation(); //foundedBitsInDoc = AdditionalBitsCheckBox.IsChecked // ? ShowUnderlineModel.RemoveAdditBits(foundedBitsInDoc) // : foundedBitsInDoc; //foundedBitsInDoc = ShifrElGamalCheckBox.IsChecked // ? ShowUnderlineModel.ShowUnderlineElGamal(foundedBitsInDoc) // : foundedBitsInDoc; SearchedText = Converter.BinaryToString(foundedBitsInDoc); if (SelectedHashMethod != null) { if (string.IsNullOrEmpty(HashFile)) { ShowMetroMessageBox("Информация", "Нет файла с хэшем!"); return; } var isHashSame = SelectedHashMethod.VerifyHash(SearchedText, HashFile); if (!isHashSame) { ShowMetroMessageBox("Информация", "Не валидный хэш!"); return; } } if (SelectedCodMethod != null) { SearchedText = Converter.BinaryToString(SelectedCodMethod.DeCoding(SearchedText)); } if (SelectedCryptMethod != null) { if (string.IsNullOrEmpty(RsaFile)) { ShowMetroMessageBox("Информация", "Нет файла с приватным ключом!"); return; } SearchedText = SelectedCryptMethod?.Decrypt(SearchedText, RsaFile) ?? SearchedText; if (string.IsNullOrEmpty(SearchedText)) { ShowMetroMessageBox("Информация", "Ключ не подходит."); return; } } if (RsaOpenCheckBox.IsChecked) { if (string.IsNullOrEmpty(RsaFile)) { ShowMetroMessageBox("Информация", "Нет файла с приватным ключом!"); return; } CryptedText = SearchedText; SearchedText = await Converter.RsaDecryptor(SearchedText, RsaFile); if (string.IsNullOrEmpty(SearchedText)) { ShowMetroMessageBox("Информация", "Ключ не подходит."); return; } } if (SearchedText.Length > 0) { ShowMetroMessageBox("Информация", "Извлечение информации из файла " + openFileDialog.SafeFileName + " прошло успешно."); } else { ShowMetroMessageBox("Информация", "Файл " + openFileDialog.SafeFileName + " не содержит скрытой информации."); } } catch (Exception e) { ShowMetroMessageBox("Информация", e.Message + "\n " + e.InnerException + "\n" + "\n" + e.Source); } }