Как обернуть Мой конструктор заглушкой? C# .NET
В настоящее время я изучаю криптеры, и это то, что я узнал до сих пор.
Криптер состоит из Строителя и заглушки.
Роль строителей заключается в шифровании файла, а заглушка обертывает файл и заставляет его работать в буфере, то есть в памяти машины, на которой он расшифровывается. (Пожалуйста, исправьте, если я ошибаюсь)
Я создал свой файловый шифратор (The builder) и, честно говоря, понятия не имею, как создать заглушку.. Я искал вокруг весь день, но все, что я могу найти, это эти действительно старые консольные приложения, ничего толком не объясняющие..
Поэтому мой вопрос таков.. Как обернуть мой текущий файловый шифратор заглушкой... или как создать заглушку. Не знаю, как сформулировать этот вопрос, так как я новичок в заглушках.
Вот мой шифровальщик файлов.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using System.Windows; using Microsoft.Win32; using System.Security.Cryptography; using System.IO; namespace Encrypter { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { string key; public MainWindow() { InitializeComponent(); key = generateKey(); } public string generateKey() { DESCryptoServiceProvider desCrypto = (DESCryptoServiceProvider)DESCryptoServiceProvider.Create(); return ASCIIEncoding.ASCII.GetString(desCrypto.Key); } private void EncryptBtn_Click(object sender, RoutedEventArgs e) { try { OpenFileDialog ofd = new OpenFileDialog(); ofd.ShowDialog(); inputencryptFileTextBox.Text = ofd.FileName; SaveFileDialog sfd = new SaveFileDialog(); sfd.ShowDialog(); outputencryptFileTextBox.Text = sfd.FileName; encrypt(inputencryptFileTextBox.Text, outputencryptFileTextBox.Text, key); MessageBox.Show("File has been encrypted.", "File"); } catch(Exception encEx) { MessageBox.Show(encEx.ToString()); } } private void encrypt(string input, string output, string strhash) { FileStream inFs, outFs; CryptoStream cs; TripleDESCryptoServiceProvider TDC = new TripleDESCryptoServiceProvider(); MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); byte[] byteHash, byteTexto; inFs = new FileStream(input, FileMode.Open, FileAccess.Read); outFs = new FileStream(output, FileMode.OpenOrCreate, FileAccess.Write); byteHash = md5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(strhash)); byteTexto = File.ReadAllBytes(input); md5.Clear(); TDC.Key = byteHash; TDC.Mode = CipherMode.ECB; cs = new CryptoStream(outFs, TDC.CreateEncryptor(), CryptoStreamMode.Write); int byteRead; long length, position = 0; length = inFs.Length; while (position < length) { byteRead = inFs.Read(byteTexto, 0, byteTexto.Length); position += byteRead; cs.Write(byteTexto, 0, byteRead); } inFs.Close(); outFs.Close(); } private void DecryptBtn_Click(object sender, RoutedEventArgs e) { try { OpenFileDialog ofd = new OpenFileDialog(); ofd.ShowDialog(); inputdecryptFileTextBox.Text = ofd.FileName; SaveFileDialog sfd = new SaveFileDialog(); sfd.ShowDialog(); outputdecryptFileTextBox.Text = sfd.FileName; decrypt(inputdecryptFileTextBox.Text, outputdecryptFileTextBox.Text, key); MessageBox.Show("File has been decrypted.", "File"); } catch(Exception ex) { MessageBox.Show(ex.ToString()); } } private void decrypt(string input, string output, string strhash) { FileStream inFs, outFs; CryptoStream cs; TripleDESCryptoServiceProvider TDC = new TripleDESCryptoServiceProvider(); MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); byte[] byteHash, byteTexto; inFs = new FileStream(input, FileMode.Open, FileAccess.Read); outFs = new FileStream(output, FileMode.OpenOrCreate, FileAccess.Write); byteHash = md5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(strhash)); byteTexto = File.ReadAllBytes(input); md5.Clear(); TDC.Key = byteHash; TDC.Mode = CipherMode.ECB; cs = new CryptoStream(outFs, TDC.CreateDecryptor(), CryptoStreamMode.Write); int byteRead; long length, position = 0; length = inFs.Length; while (position < length) { byteRead = inFs.Read(byteTexto, 0, byteTexto.Length); position += byteRead; cs.Write(byteTexto, 0, byteRead); } inFs.Close(); outFs.Close(); } } }
Что я уже пробовал:
Я пробовал просматривать некоторые примеры в Google и на некоторых форумах, но все, что я мог найти, - это старые консольные приложения 2009 года.