在附加到使用加密流加密的文件后,解密失败

时间:2012-03-15 14:32:55

标签: c# .net cryptography

希望你能在这里提供帮助。我正在使用加密流创建一个文件附加到此文件的行。 如果我一次写出所有行,那么文件将正确加密/解密。 但是如果我以附加模式打开文件,请附加一行,然后关闭文件。然后只有第一行正确解密,其他行返回垃圾。

我想知道这是否是正确的行为。我正在尝试建立一个用户在一天中输入的加密详细信息的文本文件;然后在一天结束时批量处理它们。 解密和加密整个文件只是为了给它添加一行的开销似乎是过量的,因为我可能会在一天内结束1000行。

我正在使用具有相同Initialisaion Vector的精确相同的Crypto Provider并且对所有文件的访问都有关键吗?

我做错了什么或者无法附加到加密文件?

干杯 诺尔

2 个答案:

答案 0 :(得分:2)

是的,这是预期的行为。您可以做的一件事是分别加密每个记录(文本行)并添加一个前缀,指示块的开头及其长度。然后从文件中读取时,读取前缀,检查记录长度并加载记录。对每条记录重复一次。

答案 1 :(得分:1)

我怀疑你使用的加密是一个流或链式密码 - 意味着一个加密块的输出用于修改下一个块。直接附加到这种数据然后尝试解密批次将无法工作,因为块之间的依赖关系将被破坏。

修复它的一种简单方法是添加标记或保存文件中每条记录的偏移量+长度的一些数据。当您进行批处理时,您需要为每条记录重置CryptoProvider。