在C++中签名/认证文本文件的最简单方法?

use*_*008 9 c++ encryption certificate pgp

我想验证我的程序在我客户的站点上运行创建的文本日志文件是否已被篡改.你怎么建议我这样做?我在这里搜索了一堆谷歌,但找不到我的答案.谢谢!

编辑:看完所有建议到目前为止这里是我的想法.我想保持简单,因为客户不是那种电脑,我认为将盐嵌入二进制文件是安全的.我将继续使用关键字"salt checksum hash"等搜索一个简单的解决方案,并在找到一个后回发到这里.

egr*_*nin 5

强制性序言:这里有多大危险?你必须假设篡改是可能的,但如果你花了足够的时间和金钱,你可能会非常困难.那么:你觉得多少钱?

那说:

因为它是您编写文件的代码,所以您可以将其写入加密.如果您需要它是人类可读的,您可以保留第二个加密副本,或仅包含散列的第二个文件,或为每个条目写入散列值.(当然,哈希必须包含"秘密"密钥.)如果这样做太冒险,请考虑将哈希或校验和或日志本身发送到其他服务器.等等.


Whi*_*ind 1

这是一件非常困难的事情,除非您能够以某种方式保护用于签署数据的密钥对。对数据进行签名需要私钥,如果该密钥位于机器上,则人们可以简单地更改数据或创建新数据,并使用该私钥对数据进行签名。您可以将私钥保存在“安全”的机器上,但是如何保证数据在离开原始机器之前没有被篡改?

当然,如果您只保护动态数据,事情就会变得容易得多。

如果您可以保护私钥,则对数据进行签名很容易。

一旦您弄清楚了确保安全性的更高层次的理论,请查看GPGME来进行签名。