Не выполняется AES дешифрование - C#

Узнай цену своей работы

Формулировка задачи:

Не получается дешифровать файл, не могу понять в чем проблема. Скорее всего с байтами

outdata

нагрешил
public void Encrypt128(byte[] indata, byte[] outdata, uint[] ekey, string savefile);

Решение задачи: «Не выполняется AES дешифрование»

textual
Листинг программы
using System;
using System.Text;
using System.IO;
using System.Security.Cryptography;
 
namespace Rijcrypted
{
    class AesHS
    {
        #region encrypt
        public 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 = 256;
                    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.Mode = CipherMode.CBC;
 
                    using (var cs = new CryptoStream(ms, AES.CreateEncryptor(), CryptoStreamMode.Write))
                    {
                        cs.Write(bytesToBeEncrypted, 0, bytesToBeEncrypted.Length);
                        cs.Close();
                    }
                    encryptedBytes = ms.ToArray();
                }
            }
 
            return encryptedBytes;
        }
        #endregion
        #region decrypt
        public 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 = 256;
                    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.Mode = CipherMode.CBC;
 
                    using (var cs = new CryptoStream(ms, AES.CreateDecryptor(), CryptoStreamMode.Write))
                    {
                        cs.Write(bytesToBeDecrypted, 0, bytesToBeDecrypted.Length);
                        cs.Close();
                    }
                    decryptedBytes = ms.ToArray();
                }
            }
 
            return decryptedBytes;
        }
        #endregion
        #region encryptfile
        public void EncryptFile(string fileinput, string savefile, string password)
        {
           
            byte[] bytesToBeEncrypted = File.ReadAllBytes(fileinput);
            byte[] passwordBytes = Encoding.UTF8.GetBytes(password);
 
            // Hash the password with SHA256
            passwordBytes = SHA256.Create().ComputeHash(passwordBytes);
 
            byte[] bytesEncrypted = AES_Encrypt(bytesToBeEncrypted, passwordBytes);
 
            string fileEncrypted = savefile;
 
            File.WriteAllBytes(fileEncrypted, bytesEncrypted);
        }
        #endregion
        #region decryptfile
        public void DecryptFile(string fileEncrypted, string savefile, string password)
        {
 
            byte[] bytesToBeDecrypted = File.ReadAllBytes(fileEncrypted);
            byte[] passwordBytes = Encoding.UTF8.GetBytes(password);
            passwordBytes = SHA256.Create().ComputeHash(passwordBytes);
 
            byte[] bytesDecrypted = AES_Decrypt(bytesToBeDecrypted, passwordBytes);
 
            string file = savefile;
            File.WriteAllBytes(file, bytesDecrypted);
        }
        #endregion
 
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4 из 5