我正在尝试使用AES加密在C#中以块的形式加密和解密文件。
目前,它以1000字节的块读取文件,加密每个块,并以{IV}{Chunk0}{Chunk1}{Chunk2}...
的格式写入文件(没有任何分隔字符,没有花括号)。
解密文件时,会从文件中读取前16个字节,将其用作AES IV ,然后以块的形式解密文件的其余部分。
我的问题是,如何知道要解密的每个加密块的大小?加密时,每个块由1000个字节的纯文本组成,但是当它加密时,这1000个长度会发生变化。
我应该在每个块之间使用分隔符,例如逗号吗?或者我是否可以避免在块之间使用分隔字符,而是通过读取x个字符的块来解码? (如上所述,如果每个加密的块是1000字节的加密纯文本,我是否可以计算每个加密块的大小?)
答案 0 :(得分:0)
最简单的?加密每个块时,获取字节长度,然后将其存储在文件中:
{IV}{LengthOfEncryptedChunk}{EncryptedChunk}{IV}{LengthOfEncryptedChunk} ... etc