Ошибка: «Указанный размер блока недопустим для этого алгоритма» при инициализации AesCryptoProvider - PullRequest
3 голосов
/ 15 февраля 2012

Я пытаюсь использовать больший размер блока для шифрования AES:

private static void EncryptFile(string inFile, RSACryptoServiceProvider rsaPublicKey)
{
    using (AesCryptoServiceProvider aes = new AesCryptoServiceProvider())
    {
        // Create instance of AesManaged for
        // symetric encryption of the data.
        aes.KeySize = 256;

        // Allocating 64K
        aes.BlockSize = 8 * 1024 * 64; 
    }
}

и получаю следующее исключение:

System.Security.Cryptography.CryptographicException не обрабатывается
Сообщение = Указанный размер блока недопустим для этого алгоритма.
Source = mscorlib StackTrace: в System.Security.Cryptography.SymmetricAlgorithm.set_BlockSize (значение Int32) в ConsoleApplication4.Program.EncryptFile (String inFile, RSACryroveyS)C: \ Projects \ ConsoleApplication4 \ Program.cs: строка 117

Я уверен, что мне не хватает чего-то очевидного, какая-либо подсказка?

Ответы [ 2 ]

6 голосов
/ 16 февраля 2012

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

source

1 голос
/ 16 февраля 2012

Каждый алгоритм поддерживает только блоки определенного размера.

См. SymmetricAlgorithm.LegalBlockSizes.

...