文档从未真正提到为什么应该使用CryptoStream
而不是TransformBlock
和TransformFinalBlock
,除了它会自动调用所需的方法。
因此,为什么要使用此答案中的代码(https://dev59.com/C3I-5IYBdhLWcg3wHUnP#2006922)而不是这个:
using (var encryptor = aes.CreateEncryptor())
{
result = encryptor.TransformFinalBlock(data, 0, data.Length); // Data length is greater than the blocksize
}
尽管应该在
TransformBlock
之后,仅在最后一个块上使用TransformFinalBlock
,但不知何故,这段代码通过了所有的单元测试并且总是给出了正确的结果。是否存在任何可能会失败的情况?这是否与我使用ECB
密码模式进行测试有关,并且在其他模式下会失败?
TransformBlock
和TransformFinalBlock
是基于数组处理少量数据的,而CryptoStream
是基于流处理大量数据的块? - Suncat2000