首页 > 解决方案 > 一次性加密和散列已加密的内容

问题描述

我正在尝试加密文件(使用 AES 128 位块大小、CBC 模式、PKCS7 填充)并生成加密文件的哈希(SHA1),但一次完成。

将文件加密到 MemoryStream 然后为其计算哈希是很简单的,但这样做似乎非常低效,特别是如果要加密的源文件可能非常大(几 GB)。

我的想法是逐块读取源文件(具有固定的块大小),加密块并将加密的块传递给哈希算法,但我的理解是单独加密每个块不会产生相同的结果而不是加密整个文件(我可能完全错了)。

目前,我无法绕过 CryptoStream 来获取刚刚被它加密的内容,然后将该数据传递给哈希算法实现(例如 SHA1Managed.TransformBlock)。

澄清一下,我想计算最终加密文件的哈希,而不是源。我正在使用 .NET Standard 2.1。

谢谢!

标签: c#.netencryptionhash

解决方案


推荐阅读