我正在构建一个通过TCP运行的文件传输协议。我在发送之前加密数据。在实际加密之前是否可以计算密文的大小?
我想将文件大小发送到客户端,以便他知道数据流何时结束,同时在输出时将密文推送到流中。
加密我使用的是RijndaelManaged .NET类。
例如,大小为634字节的文件正在加密到660字节。
使用我找到的公式,块大小为16:
(inputSize / blockSize + 1)* blockSize
我得到650字节。为什么会出现差异?
输入 - 输出大小对的示例(以字节为单位):
输入: 905296 输出: 905332
输入: 82320 输出: 82356
输入: 308 输出: 340
答案 0 :(得分:1)
您找到的公式并不完全正确
考虑到ECB或CBC(本课程中唯一的选择):
计算(Bytecount / Blocksize)和省略小数部分
然后为填充添加1,然后与Blocksize相乘。
634/16 = 39.625 => 40个
40 * 16 = 640
其他10个字节......可能是标题或类似的东西。
众所周知,MS无处不在。