我正在构建一个在TCP上运行的文件传输协议。我在发送之前对数据进行加密。在实际加密之前,有可能计算密文的大小吗?
我希望将文件大小发送给客户端,以便他知道数据流何时结束,同时在输出时立即将密文推到流中。
为了加密,我使用了RijndaelManaged .NET类。
例如,大小为634字节的文件正在加密到660字节。
使用我找到的公式,块大小为16:
(inputSize / blockSize + 1) * blockSize
我得到650个字节。为什么会有这种差异?
输入-输出大小对的示例(以字节为单位):
输入:905296输出:905332
输入:82320输出:82356
输入:308输出:340
发布于 2014-03-05 19:29:47
你发现的公式不完全正确。
考虑到欧洲央行或CBC (这类学生中唯一的选择):
计算(Bytecount / Blocksize)和省略十进制部分
然后加1作为填充,然后用Blocksize进行乘法。
634/16 = 39.625 => 40
40 * 16 = 640
另外的10个bytes...probably是一个头或类似的东西。
众所周知,MS在任何地方都会添加自己的东西。
https://stackoverflow.com/questions/22207176
复制相似问题