在c++中创建不可更改报表文件的最佳实践

Best practice for creating an unalterable report file in c++

本文关键字:文件 最佳 报表 可更改 c++ 创建      更新时间:2023-10-16

我目前正在开发一个windows应用程序,用于测试铁路设备以查找任何默认值。

Utility A => OK
Utility B => NOK
...

此应用程序将检查给定的设备并生成报告。这份报告只需要写一次,不允许再修改,因为这个文件可以作为设备的工作证明。

我的第一个想法是使用pdf文件(haru lib看起来很棒),但pdf也可以修改。

我告诉自己,我可以混淆报告,并在我的应用程序中实现一个自制的阅读器,但无论我以何种方式存储它,文件总是可能被访问和修改的,对吗?

所以我没主意了。

如果我的方法和我的问题看起来很幼稚,对不起,但这是一份实习工作。

谢谢你的帮助。

编辑:我也可以在生成文件后添加校验和,并保留"校验和记录文件",并实现校验和比较工具进行验证?我想过了

我相信你的问题的答案是使用任何格式,并使用任何人都可以验证的数字签名,例如,创建一个gnupg,让需要检查您的文档的人签名该密钥,将其上传到密钥服务器之一,并使用它来签名文档。您可以发布文档,并提供指向您的公钥的链接以供验证;对于关键情况,验证者必须信任您的签名(即信任签署您密钥的人)。

人们的生命取决于火车检查的状态。因此,我很难相信有人希望您只使用免费的组件来解决这个问题。

Adobe支持强大的数字签名模型。如果您使用他们的技术基础,您可以创建经过数字签名的PDF文件,因此可以防止篡改,因为消费者可以检查签名。

你可以,正如其他人指出的那样,使用GNUpg,或者OpenSSL,来实现你自己的签名方案,但是铁路监管机构不太可能弄清楚如何使用它。

我会将报告存储在加密/受保护的数据存储中。当用户访问报告(请求副本,原始报告当然总是在数据库中,不能修改)时,它包含文本"report# XXXXX"。如果您想要验证报表,请使用报表ID从系统中检索一个新的副本。