99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
|
|
1 | |
Нужен полный код алгоритма шифрования AES 25623.01.2014, 01:16. Показов 8351. Ответов 17
Метки нет Все метки)
(
Собсна, сабж. Знаю, что оно делается в несколько строк, но именно это мне и не надо.
Надо БЕЗ использования using System.Security.Cryptography; .. Только оупен сорс.. Добавлено через 29 минут И еще: Как понять: "младшие 128 бит SHA1" ? - этот же хэш 160 битный или это 128 (половина) от 256-битного хэша?
0
|
|
23.01.2014, 01:16 | |
Ответы с готовыми решениями:
17
AES узнать сколько будет байтов после шифрования
Нужен пример реализации алгоритма шифрования AES-128 Нужен пример реализации алгоритма шифрования DES |
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
|
|
23.01.2014, 13:02 [ТС] | 3 |
turbanoff, огромнейшее спасибо! И напоследок: может ли быть 256-битный вектор (IV) в данном алгоритме?
Добавлено через 16 минут turbanoff, не получается собрать проект ![]() ![]() Ругается на: - SymmetricTransform - Aes encrypt - CipherMode и так далее..
0
|
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
|
|
23.01.2014, 17:48 [ТС] | 5 |
turbanoff, написал в ЛС одно предложение. А по поводу вектора 256-битного что можете сказать?
Я перерыл кучу исходников, то везде только 128-битный вектор максимум. Может опечатка в задании... Добавлено через 4 часа 17 минут turbanoff, собрал тот проект и пришел к выводу, что там вообще не используется вектор ![]()
0
|
![]() |
|
23.01.2014, 18:17 | 7 |
MegaSinner, вектор инициализации используется кодом, который вызывает код из AesTransform. Вообще, IV используется в симметричных шифрах, при режимах шифрования отличных от ECB. Если вам нужно просто шифрование, можете выкинуть его из кода.
1
|
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
|
|
23.01.2014, 19:23 [ТС] | 8 |
Anklav, turbanoff, мне обязательно нужно с вектором. Подскажите, куда копать..
И можно ли каким-то макаром задать 256-битный вектор?
0
|
447 / 305 / 47
Регистрация: 23.01.2013
Сообщений: 661
|
|
23.01.2014, 19:58 | 9 |
Вектор равен размеру блока для шифрования.
Популярный режим шифрования с вектором CBC. Шифрование у AES идет блочное, режим использует обратную связь, вектор является первым элементом обратной связи. Используя EBC можно построить CBC следующим образом. Инициализация: Придумываем вектор размером в блок шифрования (это просто случайные данные) Алогритм: 1) делаем операцию XOR нашего вектора, с блоком открытых данных, в данный момент обрабатывающимися. 2) шифруем полученный блок с помощью метода EBC, доступного у вашем классе. 3) зашифрованный текст записываем в файл (или куда то сохраняем) 4) этот зашифрованный текст является следующим вектором, для следующего блока. 5) возвращаемся в 1. Ниже картинка для понимания, процедуру шифрования можно принять за вызов вашего метода EBC, для блока данных.
1
|
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
|
|
23.01.2014, 21:15 [ТС] | 10 |
Anklav, о, наимудрейший!)
- это я знаю, но например если юзать встроенный в шарп using System.Security.Cryptography, то оно не позволяет создать 256-битный вектор или задать размер блока больше 128 бит, и при этом оно МОЖЕТ шифровать 256-битным ключем. По этому я и говорил про макар) Вы очень доходчиво всё расписали. Попробую усвоить эту информацию.. Спасибо! Если чё, еще вернусь... Добавлено через 1 час 1 минуту Anklav, А как расшифровывать с вектором?
0
|
447 / 305 / 47
Регистрация: 23.01.2013
Сообщений: 661
|
|
23.01.2014, 21:27 | 11 |
Обратная операция. Для начала нужно загрузить сохраненный IV, оставшийся с шифрования. (его можно сохранять открытым)
1. Сохраняем зашифрованный блок. (назовем его temp) 2. Расшифровываем блок. 3. Делаем операцию XOR нашего блока с IV. 4. Делаем IV = temp; 5. Сохраняем расшифрованные данные. 6. В пункт 1. Опять же у википедии есть отличные картинки.
1
|
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
|
|
23.01.2014, 23:00 [ТС] | 12 |
Anklav, ааа, понял)
Добавлено через 1 час 31 минуту Anklav, я так понимаю блоки - это последовательные порции данных для обработки - а что если у нас размер блока 256 бит, а размер файла, скажем, 40 байт, то не достающиеся для кратности 24 байта заполняются нолями или как?
0
|
447 / 305 / 47
Регистрация: 23.01.2013
Сообщений: 661
|
|
23.01.2014, 23:12 | 13 |
Правильно понимаете.
Можно нулями, можно случайными данными, главное не забыть их потом обрезать. Ну ,кстати, блок у aes ,вроде, всегда равен 128 битам. Есть такой интерфейс ICryptoTransform который определяет криптографическую трансформацию, так вот, вам бы его в вашем классе определить, и тогда можно пользоваться стандартными крипто-потоками, у него всего 2 метода как раз обычное шифрование бока, и последнее шифрование блока (в нем как раз то и надо дополнять блок данными, если это необходимо).
1
|
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
|
|
23.01.2014, 23:24 [ТС] | 14 |
Anklav, шифруется, но не удалось добиться самого главного:
чтобы при попытке расшифровать с неверным ключом - вылетал Эксцепшин - как это происходит, юзая System.Security.Cryptography;, а это необходимо.
0
|
447 / 305 / 47
Регистрация: 23.01.2013
Сообщений: 661
|
|
24.01.2014, 00:27 | 15 |
Честно говоря, я без понятия как он определяет верный ключ, или нет.
0
|
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
|
|
24.01.2014, 17:19 [ТС] | 16 |
Anklav, немного продвинулся в этом вопросе и застрял:
с помощью new RijndaelManaged() удалось задать 256-битный вектор, то тут такая лажа: При расшифровке сообщения с правильным ключом, но абсолютно левым вектором, каша получается только в первом блоке сообщения - всё остальное как на ладони. Почему оно так? Я перепробовал все режимы..
0
|
447 / 305 / 47
Регистрация: 23.01.2013
Сообщений: 661
|
|
24.01.2014, 17:31 | 17 |
Ну вы на картинку гляньте, где режим CBC, вектор влияет только на первый блок.
И это нормальное поведение, вектор и не должен быть ключем. Он нужен для того, что бы одинаковые открытые блоки, после шифрования не выглядели одинаково.
1
|
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
|
|
24.01.2014, 17:46 [ТС] | 18 |
Anklav, чудесно, а я думал, что глюк какой-то.
0
|
24.01.2014, 17:46 | |
Помогаю со студенческими работами здесь
18
Получение ключа для AES шифрования из строки Реализация алгоритма SHA–256
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |