С# Пример шифрования AES256 с использованием System.Security.Cryptography.Aes

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

MSDN предполагает, что я должен использовать класс AES.

Класс Rijndael является предшественником алгоритма Aes. Вы должны использовать алгоритм Aes вместо Rijndael. Для получения дополнительной информации см. Запись Различия между Rijndael и AES в блоге .NET Security.

Может ли кто-нибудь указать мне в сторону хорошего примера, используя класс AES для AES256?

Чтобы добавить немного больше ясности:

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

Все примеры, которые я видел, ожидают по меньшей мере 2 параметра для выполнения шифрования/дешифрования.

Должен ли я иметь возможность вывести вектор инициализации и ключ из текста в файле шифрования?

Это пример текста, хранящегося в моем файле шифрования:

ÊÚḠ± Ìrá ƒ @† ²; Ä; öDWnªóª ©© ¨|L

Ответы

Ответ 1

Как только я обнаружил всю информацию о том, как мой клиент обрабатывал шифрование/дешифрование в конце, он был прямолинейным, используя AesManaged example предложено dtb.

Окончательно реализованный код запускается следующим образом:

    try
    {
        // Create a new instance of the AesManaged class.  This generates a new key and initialization vector (IV).
        AesManaged myAes = new AesManaged();

        // Override the cipher mode, key and IV
        myAes.Mode = CipherMode.ECB;
        myAes.IV = new byte[16] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; // CRB mode uses an empty IV
        myAes.Key = CipherKey;  // Byte array representing the key
        myAes.Padding = PaddingMode.None;

        // Create a encryption object to perform the stream transform.
        ICryptoTransform encryptor = myAes.CreateEncryptor();

        // TODO: perform the encryption / decryption as required...

    }
    catch (Exception ex)
    {
        // TODO: Log the error 
        throw ex;
    }