private void SetHiding(Document doc, bool isVisibleColor, char[] messageInBits, bool isEncoded, bool isEncrypted) { var message = isEncoded || string.IsNullOrEmpty(Converter.BinaryToString(new string(messageInBits))) ? new string(messageInBits) : Converter.BinaryToString(new string(messageInBits)); AttributeHiding attributeHiding = new AttributeHiding(doc, isEncrypted, isVisibleColor, pathToModifiedFile); attributeHiding.HideInfoInAttribute(message); }
private async void OpenForDecode() { try { if (string.IsNullOrEmpty(PathToDoc)) { ShowMetroMessageBox("Информация", "Загрузите файл для извлечения"); return; } CryptedText = ""; SearchedText = ""; Stopwatch.Restart(); AttributeHiding attributeHiding = new AttributeHiding(PathToDoc); SearchedText = attributeHiding.GetHiddenInfoInAttribute(); 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); } }