// При закрытии формы private void Form2_FormClosing(object sender, FormClosingEventArgs e) { try { // Освободили память от aes и 3des aescng.Dispose(); tripledes.Dispose(); } catch (Exception error) { } }
protected override void Dispose(bool Disposing) { if (_disposed) { return; } if (Disposing) { // Dispose managed objects. } // Dispose unmanaged objects. _cipher.Dispose(); _cipher = null; base.Dispose(Disposing); _disposed = true; }
public void Dispose() { _aes.Dispose(); }
// функция для СИММ. Шифрования массива байт заданным алгоритмом и режимом, на выходе массив байт // аргументы: вход. байты; ключ; вектор инициализации; алгоритм AES / 3DES; режим шифруем / расшифровываем public static Byte[] SimmAlg(Byte[] arrayByte_in, Byte[] key, Byte[] iv, string selectedAlgSimm, bool EncryptIsTrue) { byte[] arrayByte_out = new byte[0]; // Выходная последовательность байт после шифрования/расшифровки ICryptoTransform cryptoTransform; try { switch (selectedAlgSimm) // Получение хеша определенным алгоритмом { case "AES": AesCng aescng = new AesCng(); // объект класса у алгоритма AES aescng.Key = key; // присваиваем ключ из аргумента aescng.IV = iv; // присваиваем вектор из аргумента if (EncryptIsTrue == true) // если вызвали для ШИФРования AES { // создали объект-шифратор cryptoTransform = aescng.CreateEncryptor(); } else // если вызвали для РАСшифровки AES { // создали объект-расшифратор cryptoTransform = aescng.CreateDecryptor(); } // получили байты на выходе arrayByte_out = cryptoTransform.TransformFinalBlock(arrayByte_in, 0, arrayByte_in.Length); aescng.Dispose(); // освобождаем ресурсы cryptoTransform.Dispose(); // освобождаем ресурсы break; case "3DES": TripleDESCng tripledescng = new TripleDESCng(); // объект класса у алгоритма AES tripledescng.Key = key; // присваиваем ключ из аргумента tripledescng.IV = iv; // присваиваем вектор из аргумента if (EncryptIsTrue == true) // если вызвали для ШИФРования AES { // создали объект-шифратор cryptoTransform = tripledescng.CreateEncryptor(); } else // если вызвали для РАСшифровки 3DES { // создали объект-расшифратор cryptoTransform = tripledescng.CreateDecryptor(); } // получили байты на выходе arrayByte_out = cryptoTransform.TransformFinalBlock(arrayByte_in, 0, arrayByte_in.Length); tripledescng.Dispose(); // освобождаем ресурсы cryptoTransform.Dispose(); // освобождаем ресурсы break; default: break; } } catch (Exception error) { //MessageBox.Show(error.Message, "НЕПРЕДВИДЕННАЯ ОШИБКА", MessageBoxButtons.OK, MessageBoxIcon.Error); if (EncryptIsTrue == true) // если шифрование { MessageBox.Show(error.Message, "НЕПРЕДВИДЕННАЯ ОШИБКА", MessageBoxButtons.OK, MessageBoxIcon.Error); } //MessageBox.Show("Ключ или вектор инициализации не подходят", "Ошибка шифрования", MessageBoxButtons.OK, MessageBoxIcon.Warning); else { MessageBox.Show("Заданные ключ или вектор инициализации не подходят для заданного шифра!\nРасшифровка не возможна.", "Ошибка расшифровки", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } return(arrayByte_out); }