c# - 一次性加密和散列已加密的内容
问题描述
我正在尝试加密文件(使用 AES 128 位块大小、CBC 模式、PKCS7 填充)并生成加密文件的哈希(SHA1),但一次完成。
将文件加密到 MemoryStream 然后为其计算哈希是很简单的,但这样做似乎非常低效,特别是如果要加密的源文件可能非常大(几 GB)。
我的想法是逐块读取源文件(具有固定的块大小),加密块并将加密的块传递给哈希算法,但我的理解是单独加密每个块不会产生相同的结果而不是加密整个文件(我可能完全错了)。
目前,我无法绕过 CryptoStream 来获取刚刚被它加密的内容,然后将该数据传递给哈希算法实现(例如 SHA1Managed.TransformBlock)。
澄清一下,我想计算最终加密文件的哈希,而不是源。我正在使用 .NET Standard 2.1。
谢谢!
解决方案
推荐阅读
- python - 比较字符串,如果数据帧记录匹配一次,则继续到下一行
- python - 如何从 WSL Ubuntu 启动 Windows Anaconda python?
- postman - 邮递员保存和锁定(防止编辑)请求/收藏
- stata - 将所有 .dta 文件合并到一个文件夹中?
- python - 在保持内联标签完整的同时按字符分隔 python 字符串
- python - 安装 tabula-py
- java - 问题:按字母顺序删除字符串数组列表中的重复项
- node.js - 无需身份验证调用 GCloud 函数
- r - 如何对变量进行分组以计算 R 中的新字段?
- php - 使用 PHP 与运行 python 脚本进行交互