过去几天我一直在讨论一个问题:在进行公钥交换+登录后,我的端点切换到Rijndael
对称加密模式,以加密客户端和服务器之间的消息。
问题是,我创建了cryptuffream并让它保持开放,认为这是最好的方法,因为该通道将用于发送多个连接。当我这样做时,加密永远不会完全输出到基本流。每个msdn,它说:
您应该始终显式关闭CryptoStream对象 通过调用Close方法完成它。这样做可以冲洗 流并导致所有剩余的数据块被处理 CryptoStream对象。
对于发送的每条消息,重建它似乎需要很多开销。是否有某种原因,或者我只是遗漏了什么?
答案 0 :(得分:2)
AES(Rijndael)使用固定大小的块,因此输出可以是块大小的倍数。如果输入未与块大小对齐,则将其填充。在解密时,删除此填充。要知道,要添加多少填充,AES需要知道确切的流长度。并且当流结束时(关闭之后)可以确定该长度。