Шифрование данных (AES) | ФОРУМ СОЦИАЛЬНОЙ ИНЖЕНЕРИИ ⭐️MeHack⭐️ - Читы, базы, раздачи аккаунтов, сливы скриптов, способы заработка
Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/zevs240/public_html/library/XenForo/Locale.php on line 401

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/zevs240/public_html/library/XenForo/Locale.php on line 403

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/zevs240/public_html/library/XenForo/Locale.php on line 409

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/zevs240/public_html/library/XenForo/Locale.php on line 411

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/zevs240/public_html/library/XenForo/Locale.php on line 417

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/zevs240/public_html/library/XenForo/Locale.php on line 423

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/zevs240/public_html/library/XenForo/Locale.php on line 425

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/zevs240/public_html/library/XenForo/Locale.php on line 427

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/zevs240/public_html/library/XenForo/Locale.php on line 429

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/zevs240/public_html/library/XenForo/Locale.php on line 435

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/zevs240/public_html/library/XenForo/Locale.php on line 437

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/zevs240/public_html/library/XenForo/Locale.php on line 443

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/zevs240/public_html/library/XenForo/Locale.php on line 445

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/zevs240/public_html/library/XenForo/Locale.php on line 451

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/zevs240/public_html/library/XenForo/Locale.php on line 453

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/zevs240/public_html/library/XenForo/Locale.php on line 455

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/zevs240/public_html/library/XenForo/Locale.php on line 457

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/zevs240/public_html/library/XenForo/Locale.php on line 463

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/zevs240/public_html/library/XenForo/Locale.php on line 469

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/zevs240/public_html/library/XenForo/Locale.php on line 475

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/zevs240/public_html/library/XenForo/Locale.php on line 491

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/zevs240/public_html/library/Siropu/AdsManager/Helper/General.php on line 2627

Шифрование данных (AES)

Тема в разделе "Вирусология", создана пользователем Mr1Frick, 12.11.17.Просмотров: 586

  1. Mr1Frick Гость

    Mr1Frick

    розыгрышей
    В наше время сейчас мало кто изучает криптографию, хотя это не менее важная часть программирования, ибо криптография это сама основа нашей безопасности.
    Самой сутью криптографии является обработка данных делающая их невозможными для чтения посторонним пользователям.
    Сегодня мы с вами рассмотрим мой пример шифрования данных на языке C#
    Используемые библиотеки:

    Код:
    using System;
    using System.IO;
    using System.Security.Cryptography;
    using System.Text;
    Сам код шифрования данных:
    Код:
    /// <summary>
           /// Encrypts a string
           /// </summary>
           /// <param name="plainText">Text to be encrypted</param>
           /// <param name="password">Password to encrypt with</param>
           /// <param name="salt">Salt to encrypt with</param>
           /// <param name="hashAlgorithm">Can be either SHA1 or MD5</param>
           /// <param name="passwordIterations">Number of iterations to do</param>
           /// <param name="initialVector">Needs to be 16 ASCII characters long</param>
           /// <param name="keySize">Can be 128, 192, or 256</param>
           /// <returns>An encrypted string</returns>
           public string Encrypt(string plainText, string password, string salt = "Kosher", string hashAlgorithm = "SHA1", int passwordIterations = 2, string initialVector = "OFRna73m*aze01xY", int keySize = 256)
           {
               if (string.IsNullOrEmpty(plainText))
                   return "";
    
               byte[] initialVectorBytes = Encoding.ASCII.GetBytes(initialVector);
               byte[] saltValueBytes = Encoding.ASCII.GetBytes(salt);
               byte[] plainTextBytes = Encoding.UTF8.GetBytes(plainText);
    
               PasswordDeriveBytes derivedPassword = new PasswordDeriveBytes(password, saltValueBytes, hashAlgorithm, passwordIterations);
               byte[] keyBytes = derivedPassword.GetBytes(keySize / 8);
               RijndaelManaged symmetricKey = new RijndaelManaged();
               symmetricKey.Mode = CipherMode.CBC;
    
               byte[] cipherTextBytes = null;
    
               using (ICryptoTransform encryptor = symmetricKey.CreateEncryptor(keyBytes, initialVectorBytes))
               {
                   using (MemoryStream memStream = new MemoryStream())
                   {
                       using (CryptoStream cryptoStream = new CryptoStream(memStream, encryptor, CryptoStreamMode.Write))
                       {
                           cryptoStream.Write(plainTextBytes, 0, plainTextBytes.Length);
                           cryptoStream.FlushFinalBlock();
                           cipherTextBytes = memStream.ToArray();
                           memStream.Close();
                           cryptoStream.Close();
                       }
                   }
               }
    
               symmetricKey.Clear();
               return Convert.ToBase64String(cipherTextBytes);
           }
    Вот код расшифровки:
    Код:
    /// <summary>
           /// Decrypts a string
           /// </summary>
           /// <param name="cipherText">Text to be decrypted</param>
           /// <param name="password">Password to decrypt with</param>
           /// <param name="salt">Salt to decrypt with</param>
           /// <param name="hashAlgorithm">Can be either SHA1 or MD5</param>
           /// <param name="passwordIterations">Number of iterations to do</param>
           /// <param name="initialVector">Needs to be 16 ASCII characters long</param>
           /// <param name="keySize">Can be 128, 192, or 256</param>
           /// <returns>A decrypted string</returns>
           public string Decrypt(string cipherText, string password, string salt = "Kosher", string hashAlgorithm = "SHA1", int passwordIterations = 2, string initialVector = "OFRna73m*aze01xY", int keySize = 256)
           {
               if (string.IsNullOrEmpty(cipherText))
                   return "";
    
               byte[] initialVectorBytes = Encoding.ASCII.GetBytes(initialVector);
               byte[] saltValueBytes = Encoding.ASCII.GetBytes(salt);
               byte[] cipherTextBytes = Convert.FromBase64String(cipherText);
    
               PasswordDeriveBytes derivedPassword = new PasswordDeriveBytes(password, saltValueBytes, hashAlgorithm, passwordIterations);
               byte[] keyBytes = derivedPassword.GetBytes(keySize / 8);
    
               RijndaelManaged symmetricKey = new RijndaelManaged();
               symmetricKey.Mode = CipherMode.CBC;
    
               byte[] plainTextBytes = new byte[cipherTextBytes.Length];
               int byteCount = 0;
    
               using (ICryptoTransform decryptor = symmetricKey.CreateDecryptor(keyBytes, initialVectorBytes))
               {
                   using (MemoryStream memStream = new MemoryStream(cipherTextBytes))
                   {
                       using (CryptoStream cryptoStream = new CryptoStream(memStream, decryptor, CryptoStreamMode.Read))
                       {
                           byteCount = cryptoStream.Read(plainTextBytes, 0, plainTextBytes.Length);
                           memStream.Close();
                           cryptoStream.Close();
                       }
                   }
               }
    
               symmetricKey.Clear();
               return Encoding.UTF8.GetString(plainTextBytes, 0, byteCount);
           }
    Я думаю мне не стоит расписывать каждую строку, так как код и так понятнее просто некуда.