private void btDecode_Click(object sender, RoutedEventArgs e) { Passphrase pass = new Passphrase(); pass.Owner = this; pass.ShowDialog(); byte[] decrypted; using (FileStream fileStream = File.OpenRead(file)) { decrypted = new byte[fileStream.Length]; fileStream.Read(decrypted, 0, decrypted.Length); } SymmetricAlgorithm sa; CipherMode mode; PaddingMode padding = PaddingMode.None; byte[] keyT = Encoding.UTF8.GetBytes(pass.pbPass.Password); SHA256 sha256 = new SHA256Cng(); keyT = sha256.ComputeHash(keyT); int n = 0; if (rbDeAES.IsChecked == true) { sa = AesCryptoServiceProvider.Create(); n = 32; } else { sa = TripleDESCryptoServiceProvider.Create(); n = 24; } byte[] key = new byte[n]; Array.Copy(keyT, key, n); byte[] iv = new byte[8]; if (n == 24) { iv = new byte[8]; } else { iv = new byte[16]; } if (rbEnCBC.IsChecked == true) { mode = CipherMode.CBC; } else { if (rbEnCFB.IsEnabled) { mode = CipherMode.CFB; } else { mode = CipherMode.CTS; } } byte[] entrophy = sha256.ComputeHash(Encoding.UTF8.GetBytes(pass.pbPass.Password)); //File.ReadAllBytes(@"D:\OSU\ЗПиД\ЗПиД6\Энтропия.txt");//113 183 // SHA256 sha256 = new SHA256Cng(); // entrophy = sha256.ComputeHash(entrophy); using (FileStream fstream = File.OpenRead(@"D:\OSU\ЗПиД\ЗПиД6\Пароль.txt")) { byte[] keyTemp = new byte[fstream.Length]; fstream.Read(keyTemp, 0, keyTemp.Length); key = ProtectedData.Unprotect(keyTemp, entrophy, DataProtectionScope.CurrentUser); // keyT = Decrypt(temp, sa, key, iv, mode, padding); } //Array.Copy(keyT, key, n); byte[] decr = Decrypt(decrypted, sa, key, iv, mode, padding); string result = Encoding.UTF8.GetString(decr); File.WriteAllText(@"C:\Users\Nastya\Desktop\Университет\ЗПиД\ЗПиД6\Результат.txt", result, Encoding.UTF8); MessageBox.Show("Выполнено!"); tbDeOpenDialog.Text = ""; }
private void Encode_Click(object sender, RoutedEventArgs e) { Passphrase pass = new Passphrase(); pass.Owner = this; pass.ShowDialog(); SymmetricAlgorithm sa; byte[] iv = new byte[8]; CipherMode mode; PaddingMode padding = PaddingMode.Zeros; int n = 0; if (rbEnAES.IsChecked == true) { sa = AesCryptoServiceProvider.Create(); n = 32; } else { sa = TripleDESCryptoServiceProvider.Create(); n = 24; } if (n == 32) { iv = new byte[16]; } byte[] key = new byte[n]; if (rbEnCBC.IsChecked == true) { mode = CipherMode.CBC; } else { if (rbEnCFB.IsChecked == true) { mode = CipherMode.CFB; } else { mode = CipherMode.CTS; } } byte[] entrophy = new byte[32]; /* RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider(); * rng.GetBytes(entrophy);*/ SHA256 sha256 = new SHA256Cng(); entrophy = sha256.ComputeHash(Encoding.UTF8.GetBytes(pass.pbPass.Password));//114 174 3 byte[] salt = Encoding.UTF8.GetBytes("saltsaltsalt"); // File.WriteAllBytes(@"D:\OSU\ЗПиД\ЗПиД6\Энтропия.txt", entrophy); if (rbGeneration.IsChecked == true) { Rfc2898DeriveBytes pbkdf2 = new Rfc2898DeriveBytes(pass.pbPass.Password, salt, 10000); key = pbkdf2.GetBytes(n); } else { Rfc2898DeriveBytes pbkdf2 = new Rfc2898DeriveBytes(pbKeyPhrase.Password, salt, 10000); key = pbkdf2.GetBytes(n); } byte[] encrypted = Encrypt(dataText, sa, key, iv, mode, padding); using ( FileStream fs = new FileStream(@"D:\OSU\ЗПиД\ЗПиД6\Шифр.txt", FileMode.Create)) { fs.Write(encrypted, 0, encrypted.Length); } byte[] keyTemp = Encoding.UTF8.GetBytes(pass.pbPass.Password); // SHA256 sha256 = new SHA256Managed(); keyTemp = sha256.ComputeHash(keyTemp); byte[] keyForkey = new byte[n]; Array.Copy(keyTemp, keyForkey, n); // byte[] en = Encrypt(key, sa, keyForkey, iv, mode, padding); byte[] en = ProtectedData.Protect(key, entrophy, DataProtectionScope.CurrentUser); using ( FileStream fs_key = new FileStream(@"D:\OSU\ЗПиД\ЗПиД6\Пароль.txt", FileMode.Create)) { fs_key.Write(en, 0, en.Length); } MessageBox.Show("Выполнено!"); tbEnOpenDialog.Text = ""; rbGeneration.IsChecked = true; pbKeyPhrase.Password = ""; rbGeneration_Checked(sender, e); }