在过去的几天里,我一直在想一个问题:进行公钥交换+登录后,我的端点切换到Rijndael
对称加密架构,以加密客户端和服务器之间的消息。
问题是,我创建了加密流并将其打开,认为这是最好的方法,因为该通道将用于发送多个连接。当我这样做时,加密永远不会完全输出到基本流。每个msdn,它说:
您应该始终在关闭后显式关闭CryptoStream对象
通过调用Close方法使用它来完成。这样做会冲洗
流并导致所有剩余的数据块由
CryptoStream对象。
对于发送的每条消息,重建它似乎都非常麻烦。是出于某种原因,还是我只是想念一些东西?
最佳答案
AES(Rijndael)使用固定大小的块,因此输出可以是块大小的倍数。如果输入未与块大小对齐,则将其填充。在解密时,将删除此填充。要知道要添加多少填充,AES需要知道确切的流长度。并且该长度可以在流结束时(关闭后)确定。
关于c# - 重建CryptoStream有多少开销?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15950763/