Здравствуйте! Нужно реализовать на основе 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;
}
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости