是否可以编写保护JSON文件的旧数据并仅启用追加?

时间:2017-09-27 09:20:37

标签: javascript java python

我需要在JSON文件中存储一些带日期戳的数据。它是传感器输出。每天都会使用其他数据更新相同的JSON文件。现在,是否可以对已有数据进行一些写保护,以确保只有新行可以添加到文档中,并且不会发生手动篡改?

我怀疑在每次更新后创建校验和可能有所帮助,但我不确定如何实现它?我的意思是如果JSON文件的某些部分是可编辑的,那么校验和也可能是可编辑的。

历史保护的其他任何方式?

1 个答案:

答案 0 :(得分:0)

通常只对完整文件存在写保护。因此,您可以撤消该文件的写入权限,但此后也不再可能附加。

为了确保没有发生篡改,标准方法是以加密方式签署数据。原则上你可以这样做:

  • 获取文件的内容。
  • 在此字符串中添加一个密钥(任意字符串或随机字符都可以,越长越好)。
  • 创建加密校验和(SHA256哈希或类似)。
  • 将此哈希附加到文件中。 (之前和之后的新行。)

每次向文件追加内容时,都可以再次执行此操作。因为除了你之外没有人知道你的密钥,除了你之外没有人能够在哈希码之上生成文件部分的正确哈希码。

这不会阻止篡改,但它将可检测

对于纯文本文件,使用sha256sum等shell实用程序相对容易完成。但是你在文件中有一个JSON结构。这是一个复杂的情况,因为文件中的位置不再与数据的年龄相关(与仅附加到的文本文件不同)。

要想达到您想要的效果,您需要获得有关数据的年龄信息。你有这个吗?如果您提供JSON结构为@Rohit要求我们可以提供更详细的建议。