收到错误:初始化AesCryptoProvider时“指定的块大小对此算法无效”

时间:2012-02-15 19:54:44

标签: c# .net encryption aes

我正在尝试使用更大的块大小进行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,RSACryptoServiceProvider rsaPublicKey)in   C:\ Projects \ ConsoleApplication4 \ Program.cs:第117行

我确实错过了某些可能的任何线索?

2 个答案:

答案 0 :(得分:6)

AES似乎只支持块大小等于128.看来您可以通过将数据处理为多个块来解决这个问题。

source

答案 1 :(得分:1)

每种算法仅支持某些块大小。

请参阅SymmetricAlgorithm.LegalBlockSizes