Реализация AES режима шифрования CBC на основе ECB в C#

484
25 мая 2017, 07:27

Здравствуйте! Нужно реализовать на основе ECB (собственно, без использования библиотеки Cryptography для CBC) шифрование в режиме CBC (для алгоритма AES). Возникло несколько вопрос: 1) как можно исходную byte[] последовательность разделить на несколько блоков (насколько понимаю, блок должен быть 128 бит). 2) Как производить XOR вектора инициализации и блока открытых данных? (опять таки, на данный момент данные хранятся в byte[] массивах)

Сейчас делаю так:

List<string> Blocks = Divider(text, 16); // text - исходный открытый текст, разделяю его по 16 байт, считаю каждый элемент List - блоком.
string result = "";
                    for (int j = 0; j < Blocks.Count; j++)
                    {
                        result += Xor(Blocks[j], IV);
                        byte[] block = EncryptEcb(ConvertBytes(result)); // ConvertBytes - перевод в byte[] строки, EncryptEcb - AES шифрование в режиме ECB. 
                        IV = block;
                    }

Метод Xor (вероятно, логически неверно):

private static string Xor(string message, byte[] key)
        {
            string result = "";
            for (int i = 0; i < message.Length; i++)
                result += (char)(message[i] ^ key[i]);
            return result;
        }
READ ALSO
Ошибка с интерполяцией

Ошибка с интерполяцией

Здравствуйте, В проекте таких записей у меня очень много

210
Работа с WiFi на C#

Работа с WiFi на C#

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

592
Поиск файла из ListBox

Поиск файла из ListBox

Есть ListBox в который добавляются файлы через OpenFileDialogКак по нажатию на Button найти информацию в интернете о выбранной строке в ListBox? То есть пользователь...

267
SpecFlow передача параметров

SpecFlow передача параметров

Как в SpecFlow передать параметры типа object?

248