1 / 1 / 0
Регистрация: 18.03.2015
Сообщений: 53

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

30.03.2016, 23:38. Показов 1998. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не получается дешифровать файл, не могу понять в чем проблема.
Скорее всего с байтами outdata нагрешил
C#
1
public void Encrypt128(byte[] indata, byte[] outdata, uint[] ekey, string savefile);
Вложения
Тип файла: rar aestest.rar (78.0 Кб, 14 просмотров)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.03.2016, 23:38
Ответы с готовыми решениями:

AES 192 и AES 256
Добрый день! Возможно ли в Java сделать шифрование с помощью AES 256- или 192-битными ключами? Единственное условие, что мешает мне...

Проект выполняется на Windows 8, но не выполняется на виртуальной машине
У меня есть проект, собранный в релиз, в котором осуществляется внедрение своей dll в память чужих процессов (после внедрения в DLL...

Код не выполняется в одном месте, но выполняется в другом
Вот код процедуры: LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { PAINTSTRUCT ps; HDC hdc; ...

5
 Аватар для Anklav
447 / 305 / 47
Регистрация: 23.01.2013
Сообщений: 661
31.03.2016, 21:02
Лучший ответ Сообщение было отмечено OOP как решение

Решение

Во первых у вас пример кривой, он не будет шифровать файл целиком, только первые 16 байт.
Во вторых трансформация создается с флагом encrypion = true, и скорее всего использовалась с этим флагом и для дешифрования, что не верно.

Вот переделанный консольный пример, который шифрует и дешифрует 16 байт.
Вложения
Тип файла: zip aestest.zip (21.7 Кб, 22 просмотров)
0
1 / 1 / 0
Регистрация: 18.03.2015
Сообщений: 53
31.03.2016, 22:25  [ТС]
Anklav, Понятно, спасибо, и нет использовалось false,,, интересно почему только первых 16 байт? нужно тогда файл разделить на блоки по 16 и по порядку их шифровать?
0
 Аватар для Anklav
447 / 305 / 47
Регистрация: 23.01.2013
Сообщений: 661
31.03.2016, 22:40
Потому что AESTansform обрабатывает только по 16 байт. Вы реализацию вообще смотрели? там же очевидно записывается в output только первые 16 байт, посмотрите внимательно.

Для шифрования всего файла вам нужно последовательно передавать в трансформацию по 16 байт, а результаты последовательно записывать в файл. Тогда вы зашифруете файл в режиме ECB, он к слову уязвим.

Цитата Сообщение от OOP Посмотреть сообщение
Anklav, Понятно, спасибо, и нет использовалось false
К сожалению в примере этого не видно. А опыт того, что у вас оно не работает, а у меня работает - говорит о обратном.
0
1 / 1 / 0
Регистрация: 18.03.2015
Сообщений: 53
31.03.2016, 23:05  [ТС]
Anklav, Спасибо за помощь, смотрел и в коде реализацию и вики читал, просто сравнительно небольшой опыт в программированию вот в чем проблема)

Добавлено через 15 минут
получается если шифровать стандартными методами так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
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
 
    }
}
то оно тоже только первых 16 байт шифрует поэтому такая скорость шифрования.
0
 Аватар для Anklav
447 / 305 / 47
Регистрация: 23.01.2013
Сообщений: 661
31.03.2016, 23:20
OOP, нет этот алгоритм должен шифровать блок данных полностью.

Работает быстро т.к. Miсrosoft использует нативную библиотеку, которая в свою очередь должна использовать мультимедийное расширение процессора AESNI, если железо его поддерживает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.03.2016, 23:20
Помогаю со студенческими работами здесь

не выполняется запрос в коде, но выполняется в phpliteadmin
всем привет! необходима небольшая помощь, есть бд с таблицей "keys" и одной из колонок в ней - "key". также есть запрос: SELECT...

Запрос выполняется в SSMS, но не выполняется в коде C#
Есть некоторый сервер с проверкой подлинности sql. Нужно выполнить хранимую процедуру, которая лежит на этом сервере. Через Sql...

Нужно передать файл, расположенный на рабочей станции, на которой выполняется сервер, на рабочую станцию​​, на которой выполняется клиент. MailSlot
Ребята. Нужна помощь. Нужно передать файл, расположенный на рабочей станции, на которой выполняется сервер, на рабочую...

AES
дорогие программисты помогите пожалуйста влюбленному парню) моя подружка учится на программиста и она сейчас в глубоком стрессе((( ей нужна...

AES в C++
Привет, где можно найти рабочую функцию шифрования/дешифрования AES в С++ ? Работаю в builder Спасибо!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru