99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
1

Нужен полный код алгоритма шифрования AES 256

23.01.2014, 01:16. Показов 8351. Ответов 17
Метки нет (Все метки)

Собсна, сабж. Знаю, что оно делается в несколько строк, но именно это мне и не надо.
Надо БЕЗ использования using System.Security.Cryptography; ..
Только оупен сорс..

Добавлено через 29 минут
И еще:
Как понять: "младшие 128 бит SHA1" ? - этот же хэш 160 битный или это 128 (половина) от 256-битного хэша?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.01.2014, 01:16
Ответы с готовыми решениями:

AES узнать сколько будет байтов после шифрования
Доброго времени суток. Мне нужно узнать сколько количество байтов еще до шифрования, using...

Чтение byte из файла (Программа шифрования и дешифрования AES-128)
Добрый день, реализую программу шифрования и дешифрования AES-128 Весь код уже прописан и всё...

Нужен пример реализации алгоритма шифрования AES-128
Всем доброго времени суток =) Знаю, что во Framework'е есть встроенные средства для шифрования и...

Нужен пример реализации алгоритма шифрования DES
Всем доброго времени суток =) Знаю, что во Framework'е есть встроенные средства для шифрования и...

17
Эксперт Java
4088 / 3822 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
23.01.2014, 11:06 2
Лучший ответ Сообщение было отмечено NickoTin как решение

Решение

Цитата Сообщение от MegaSinner Посмотреть сообщение
Только оупен сорс
mono AES

Добавлено через 5 минут
Цитата Сообщение от MegaSinner Посмотреть сообщение
Как понять: "младшие 128 бит SHA1" ? - этот же хэш 160 битный или это 128 (половина) от 256-битного хэша?
длина SHA-1 - 160 бит. Очевидно это не может быть половина от 256-битного хэша.
Получаете 160 битный хэш, и отбрасываете последние 32 бит
1
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
23.01.2014, 13:02  [ТС] 3
turbanoff, огромнейшее спасибо! И напоследок: может ли быть 256-битный вектор (IV) в данном алгоритме?

Добавлено через 16 минут
turbanoff, не получается собрать проект Нашел и тот Mono.Security.Cryptography;, создал классы, прописал их юзинги и 22 ошибки пишет
Ругается на:
- SymmetricTransform
- Aes
encrypt
- CipherMode
и так далее..
0
Эксперт Java
4088 / 3822 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
23.01.2014, 13:18 4
MegaSinner, Уберите вообще наследование от SymmetricTransform. И используйте метод ECB напрямую.
0
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
23.01.2014, 17:48  [ТС] 5
turbanoff, написал в ЛС одно предложение. А по поводу вектора 256-битного что можете сказать?
Я перерыл кучу исходников, то везде только 128-битный вектор максимум. Может опечатка в задании...

Добавлено через 4 часа 17 минут
turbanoff, собрал тот проект и пришел к выводу, что там вообще не используется вектор
0
447 / 305 / 47
Регистрация: 23.01.2013
Сообщений: 661
23.01.2014, 18:14 6
Ну так, вы на режим шифрования EBC гляньте.

Но вы зато с помощью него, очень просто можете построить любой из нужных алгоритмов, где вектор используется. На картинках все доступно объясняется.
1
Эксперт Java
4088 / 3822 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
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, для блока данных.
Миниатюры
Нужен полный код алгоритма шифрования AES 256  
1
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
23.01.2014, 21:15  [ТС] 10
Anklav, о, наимудрейший!)
Цитата Сообщение от 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.

Опять же у википедии есть отличные картинки.
Миниатюры
Нужен полный код алгоритма шифрования AES 256  
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.01.2014, 17:46
Помогаю со студенческими работами здесь

Получение ключа для AES шифрования из строки
Здравствуйте, есть строка в формате string, имеющая 32 символа (хеш md5). Нужно эту строку...

Реализация алгоритма SHA–256
Здравствуйте. Скиньте пожалуйста исходник алгоритма SHA–256 с пояснением если есть. В нете одна...

Реализовать шифрование данных с помощью AES алгоритма
добрый день друзья помогите реализовать шифрование данных с помощью AES алгоритма. что бы все...

Шифрование AES 256
Доброго времени суток, помогите реализовать шифрование сам код шифрование public static...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru