在初始化AesCryptoProvider时出现错误:“指定的块大小对于此算法无效”。

3

我正在尝试使用更大的块大小进行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未处理
Message=指定的块大小对于此算法无效。
Source=mscorlib StackTrace: at System.Security.Cryptography.SymmetricAlgorithm.set_BlockSize(Int32 value) at ConsoleApplication4.Program.EncryptFile(String inFile, RSACryptoServiceProvider rsaPublicKey) in C:\Projects\ConsoleApplication4\Program.cs:line 117

我肯定是忽略了一些显而易见的东西,有什么线索吗?


你在 LegalBlockSizes 中查阅过吗? - H H
谢谢!我自己或.NET - 我们中的任何一个都是笨蛋。如果BlockSize固定(似乎是这样),那么为什么它是可变属性? - kalrashi
这是基类 SymmetricAlgorithm 的一个属性,非常通用。一些算法支持多个块大小。 - President James K. Polk
2个回答

7

看起来AES只支持块大小为128。但可以通过将数据处理为多个块来解决此问题。

来源


2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接