Подтвердить что ты не робот

RijndaelManaged vs AesCryptoServiceProvider (шифрование AES)

Мне нужно было зашифровать данные с помощью AES. Во время исследования я обнаружил класс AesCryptoServiceProvider.

Я очень мало знаю об шифровании, и я не знал, что такое вектор инициализации (IV), поэтому я попытался найти пример AES в переполнении стека, и это привело меня к этому вопрос.

Почему ссылка использует класс RijndaelManaged? Являются RijndaelManaged и AesCryptoServiceProvider классы, выполняющие то же самое?

4b9b3361

Ответ 1

AES основан на Rijndael, но с размером блока, ограниченным 128 бит. Rijndael поддерживает более широкий диапазон размеров блоков, и многие криптографические библиотеки предоставляют отдельную реализацию Rijndael для дополнения AES.

Размеры блока 128, 160, 192, 224 и 256 бит поддерживаются алгоритмом Rijndael, но только стандарт 128-битного блока указан в стандарте AES. [Wikipedia]

Вы связаны с классом RijndaelManaged. Эквивалентным классом для AES является AesManaged.

Относительно разницы между классами: AesManaged просто использует RijndaelManaged с размером блока, равным 128. AesManaged и RijndaelManaged не соответствуют FIPS и при использовании генерируют исключение, если флаг групповой политики FIPS установлен. В .NET Framework 4.6.2 (август 2016 г.) добавлен класс AesCng, реализация CNG версия алгоритма AES.

IV - это фрагмент случайных данных, равный по длине размеру блока, который требуется для определенных симметричных режимов работы ( например, CBC-режим). Обычно IV объединяется (XOR-ed) с первым блоком открытого текста или первым блоком зашифрованного текста. Идея состоит в том, чтобы гарантировать, что шифрование одного и того же сообщения дважды одним и тем же ключом не приведет к тому же выводу.