Beispiel #1
0
 // При закрытии формы
 private void Form2_FormClosing(object sender, FormClosingEventArgs e)
 {
     try
     {
         // Освободили память от aes и 3des
         aescng.Dispose();
         tripledes.Dispose();
     }
     catch (Exception error)
     {
     }
 }
Beispiel #2
0
 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;
 }
Beispiel #3
0
 public void Dispose()
 {
     _aes.Dispose();
 }
Beispiel #4
0
        // функция для СИММ. Шифрования массива байт заданным алгоритмом и режимом, на выходе массив байт
        // аргументы: вход. байты; ключ; вектор инициализации; алгоритм 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);
        }