我有兴趣提供一个在.Net 中使用的托管 dll,它提供经过身份验证的加密服务。DLL 可能在 WPF 程序或 ASP 应用程序中使用。我有几个与 Microsoft 的加密和流模型有关的问题。
经过身份验证的加密模式(CCM、CWC、EAX、GCM 等)通常会产生两个工件 - 第一个是密文,第二个是身份验证标签。流式加密相当容易,但可能存在一些问题。例如,由于标头的构建方式和经过身份验证的加密模式会产生身份验证标签,因此无法流式传输 CCM。
解密比较棘手,因为它无法流式传输。无法流式传输解密,因为所有密文都必须可用,并且密文必须在解密之前使用身份验证标签进行验证。
如何为分组密码调整经过身份验证的加密模式,以便它可以用于CryptoStream
?甚至可能吗?也许是微软不提供它的原因?
微软有推荐吗?例如,将大消息分解成更小的消息或单元(每个都有自己的标签)?还是 MS 建议在输入整个消息和标签之前进行缓冲?
Microsoft 建议在哪里“放置”标签?在流的开头?在流的尽头?
一些有用的参考资料: