Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/47: Рейтинг темы: голосов - 47, средняя оценка - 4.55
 Аватар для MegaSinner
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746

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

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

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

Добавлено через 29 минут
И еще:
Как понять: "младшие 128 бит SHA1" ? - этот же хэш 160 битный или это 128 (половина) от 256-битного хэша?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.01.2014, 01:16
Ответы с готовыми решениями:

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

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

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

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

Решение

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

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

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

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

Но вы зато с помощью него, очень просто можете построить любой из нужных алгоритмов, где вектор используется. На картинках все доступно объясняется.
1
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
23.01.2014, 18:17
MegaSinner, вектор инициализации используется кодом, который вызывает код из AesTransform. Вообще, IV используется в симметричных шифрах, при режимах шифрования отличных от ECB. Если вам нужно просто шифрование, можете выкинуть его из кода.
1
 Аватар для MegaSinner
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
23.01.2014, 19:23  [ТС]
Anklav, turbanoff, мне обязательно нужно с вектором. Подскажите, куда копать..
И можно ли каким-то макаром задать 256-битный вектор?
0
 Аватар для Anklav
447 / 305 / 47
Регистрация: 23.01.2013
Сообщений: 661
23.01.2014, 19:58
Вектор равен размеру блока для шифрования.

Популярный режим шифрования с вектором CBC.
Шифрование у AES идет блочное, режим использует обратную связь, вектор является первым элементом обратной связи.

Используя EBC можно построить CBC следующим образом.
Инициализация:
Придумываем вектор размером в блок шифрования (это просто случайные данные)

Алогритм:
1) делаем операцию XOR нашего вектора, с блоком открытых данных, в данный момент обрабатывающимися.
2) шифруем полученный блок с помощью метода EBC, доступного у вашем классе.
3) зашифрованный текст записываем в файл (или куда то сохраняем)
4) этот зашифрованный текст является следующим вектором, для следующего блока.
5) возвращаемся в 1.

Ниже картинка для понимания, процедуру шифрования можно принять за вызов вашего метода EBC, для блока данных.
Миниатюры
Нужен полный код алгоритма шифрования AES 256  
1
 Аватар для MegaSinner
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
23.01.2014, 21:15  [ТС]
Anklav, о, наимудрейший!)
Цитата Сообщение от Anklav Посмотреть сообщение
Вектор равен размеру блока для шифрования
- это я знаю, но например если юзать встроенный в шарп using System.Security.Cryptography, то оно не позволяет создать 256-битный вектор или задать размер блока больше 128 бит, и при этом оно МОЖЕТ шифровать 256-битным ключем.
По этому я и говорил про макар) Вы очень доходчиво всё расписали. Попробую усвоить эту информацию.. Спасибо!
Если чё, еще вернусь...

Добавлено через 1 час 1 минуту
Anklav, А как расшифровывать с вектором?
0
 Аватар для Anklav
447 / 305 / 47
Регистрация: 23.01.2013
Сообщений: 661
23.01.2014, 21:27
Обратная операция. Для начала нужно загрузить сохраненный IV, оставшийся с шифрования. (его можно сохранять открытым)

1. Сохраняем зашифрованный блок. (назовем его temp)
2. Расшифровываем блок.
3. Делаем операцию XOR нашего блока с IV.
4. Делаем IV = temp;
5. Сохраняем расшифрованные данные.
6. В пункт 1.

Опять же у википедии есть отличные картинки.
Миниатюры
Нужен полный код алгоритма шифрования AES 256  
1
 Аватар для MegaSinner
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
23.01.2014, 23:00  [ТС]
Anklav, ааа, понял)

Добавлено через 1 час 31 минуту
Anklav, я так понимаю блоки - это последовательные порции данных для обработки - а что если у нас размер блока 256 бит, а размер файла, скажем, 40 байт, то не достающиеся для кратности 24 байта заполняются нолями или как?
0
 Аватар для Anklav
447 / 305 / 47
Регистрация: 23.01.2013
Сообщений: 661
23.01.2014, 23:12
Правильно понимаете.
Можно нулями, можно случайными данными, главное не забыть их потом обрезать.

Ну ,кстати, блок у aes ,вроде, всегда равен 128 битам.

Есть такой интерфейс ICryptoTransform который определяет криптографическую трансформацию, так вот, вам бы его в вашем классе определить, и тогда можно пользоваться стандартными крипто-потоками, у него всего 2 метода как раз обычное шифрование бока, и последнее шифрование блока (в нем как раз то и надо дополнять блок данными, если это необходимо).
1
 Аватар для MegaSinner
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
23.01.2014, 23:24  [ТС]
Anklav, шифруется, но не удалось добиться самого главного:
чтобы при попытке расшифровать с неверным ключом - вылетал Эксцепшин -
как это происходит, юзая System.Security.Cryptography;,
а это необходимо.
0
 Аватар для Anklav
447 / 305 / 47
Регистрация: 23.01.2013
Сообщений: 661
24.01.2014, 00:27
Честно говоря, я без понятия как он определяет верный ключ, или нет.
0
 Аватар для MegaSinner
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
24.01.2014, 17:19  [ТС]
Anklav, немного продвинулся в этом вопросе и застрял:
с помощью new RijndaelManaged() удалось задать 256-битный вектор, то тут такая лажа:
При расшифровке сообщения с правильным ключом, но абсолютно левым вектором, каша получается только в первом блоке сообщения - всё остальное как на ладони. Почему оно так? Я перепробовал все режимы..
0
 Аватар для Anklav
447 / 305 / 47
Регистрация: 23.01.2013
Сообщений: 661
24.01.2014, 17:31
Ну вы на картинку гляньте, где режим CBC, вектор влияет только на первый блок.
И это нормальное поведение, вектор и не должен быть ключем. Он нужен для того, что бы одинаковые открытые блоки, после шифрования не выглядели одинаково.
1
 Аватар для MegaSinner
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
24.01.2014, 17:46  [ТС]
Anklav, чудесно, а я думал, что глюк какой-то.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.01.2014, 17:46
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 01.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 31.01.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru