在附加到使用加密流加密的文件后解密失败
本文关键字:加密 文件 解密 失败 密流 | 更新日期: 2023-09-27 18:28:07
希望您能在这里提供帮助。我正在创建一个文件,使用Crypto流将行附加到这个文件中。如果我一次写出所有行,那么文件将正确加密/解密。但如果我以追加模式打开文件,追加一行,然后关闭文件。然后只有第一行正确解密,其他行返回垃圾。
我想知道这是否是正确的行为。我正试图建立一个用户在一天中输入的加密细节的文本文件;然后在一天结束时对它们进行批量处理。仅仅为了给整个文件添加一行而对其进行解密和加密的开销似乎太大了,因为我可能会在一天内处理1000行。
我正在使用相同的加密提供程序,并使用相同的Initialisaion Vector和密钥访问文件?
我是做错了什么,还是无法附加到加密文件中?
干杯Noel
是的,这是预期的行为。您可以做的一件事是分别加密每个记录(文本行),并添加一个前缀,指示块的开头及其长度。然后在读取文件时,读取前缀,检查记录长度并加载记录。对每条记录重复此操作。
我怀疑您使用的加密货币是流或链式密码,这意味着一个加密块的输出用于修改下一个块。直接附加到这类数据上,然后尝试解密批量将不起作用,因为块之间的依赖关系将被打破。
修复它的一个简单方法是添加一个标记或为文件中每个记录的偏移量+长度保存一些数据。当您进行批量处理时,您需要为每条记录重置CryptoProvider。