В чем проблема увеличения времени шифрования моего алгоритма потокового шифра? - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть собственный алгоритм потокового шифра, и я провел сравнение между ним и производительностью AES.Я проверил это на нескольких файлах с различными размерами (до 500 КБ).Время шифрования / дешифрования меньше, чем AES для файлов размером около 500 КБ.но для файлов размером более 500 КБ время шифрования больше, чем для AES, но время расшифровки - наименьшее.

public static byte[] AES_Encrypt(byte[] bytesToBeEncrypted, byte[] passwordBytes)
{
    byte[] encryptedBytes = null;

    byte[] saltBytes = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 };

    using (MemoryStream ms = new MemoryStream())
    {
        using (RijndaelManaged AES = new RijndaelManaged())
    {
            AES.KeySize = 128;
            AES.BlockSize = 128;
            var key = new Rfc2898DeriveBytes(passwordBytes, 
            saltBytes, 1000);
            AES.Key = key.GetBytes(AES.KeySize / 8);
            AES.IV = key.GetBytes(AES.BlockSize / 8);
            AES.Padding = PaddingMode.Zeros;
            AES.Mode = CipherMode.CFB;

            using (var cs = new CryptoStream(ms, 
            AES.CreateEncryptor(), CryptoStreamMode.Write))
            {
                cs.Write(bytesToBeEncrypted, 0, 
                bytesToBeEncrypted.Length);
                cs.Close();
            }
            encryptedBytes = ms.ToArray();
        }
        ms.Close();
    }

    return encryptedBytes;
}

public static byte[] AES_Decrypt(byte[] bytesToBeDecrypted, byte[] passwordBytes)
{
    byte[] decryptedBytes = null;
    byte[] saltBytes = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 };

    using (MemoryStream ms = new MemoryStream())
    {
        using (RijndaelManaged AES = new RijndaelManaged())
        {
            AES.KeySize = 128;
            AES.BlockSize = 128;
            var key = new Rfc2898DeriveBytes(passwordBytes, 
      saltBytes, 1000);
            AES.Key = key.GetBytes(AES.KeySize / 8);
            AES.IV = key.GetBytes(AES.BlockSize / 8);
            AES.Padding = PaddingMode.Zeros;
            AES.Mode = CipherMode.CFB;                      

            using (var cs = new CryptoStream(ms, 
           AES.CreateDecryptor(), CryptoStreamMode.Write))
            {
                cs.Write(bytesToBeDecrypted, 0, 
               bytesToBeDecrypted.Length);
                cs.Close();
            }
            decryptedBytes = ms.ToArray();
        }
    }

    return decryptedBytes;
}
...