如何将加密数据写入文本文件



我有一个项目,我们每5分钟向一个文件写入少量数据。我们的想法是观察这些数据在几个小时、几天和几周内是如何变化的。

其中一个要求是以安全的格式存储这些数据。我们已经有了一种加密方案,可以通过DataI/O流将这些数据作为字节[]数组在网络上发送。

我的问题是,有没有一种方法可以将加密的byte[]数组写入文本文件,这样我就可以读出它们?目前我最大的问题是从文件中读取字符串,这会打乱byte[]数组。

有什么想法或建议吗?

您需要做的是获取数据并将其放入字节数组中。然后,一旦它在字节数组中,就可以使用加密算法对其进行加密。然后将其写入文件。

当你想取回原始数据时,你必须从文件中读取字节数组,然后解密字节数组,这样你就有了原始数据。你不能只将这些数据作为字符串读取,因为你的加密算法会创建无法用常规字符表示的字节,所以你的数据会变得一团糟。

只要确保将加密数据读取为字节数组,而不是字符串,这就是问题所在。


如果您想将多字节数组写入单个文件,那么您可能应该这样做,因为您使用的是Java:

writer.print(arr.length);
writer.print(arr);
writer.flush();

对每个字节数组执行此操作。然后当你读回字节数组时:

int length = reader.readInt();
byte[] bytes = new byte[length];
// fill array

通过这种方式,文件的结构可以如下:

[跟随阵列的长度][阵列][第二阵列的长度][第二阵列]

您将能够将所有字节数组背靠背放置,并且由于每个数组都以数组的长度开头,因此您将知道需要将多少数据放入每个数组中。

有关AES+CBC Java示例的示例,请参阅如何附加到AES加密的文件,该示例允许打开已加密的文件并将更多加密的数据附加到中,而在解密时不需要任何特殊处理,因为它看起来就像整个文件只加密一次一样。

相关内容

  • 没有找到相关文章

最新更新