我有一个数据.目前,它是一个XML文件,但架构可能会发生变化.所以我们暂时假设它是一个C#类.
当我将数据存储在磁盘或数据库中时,我需要添加某种签名或指纹或校验和或其他任何内容,以确保没有人可以修改数据.警告:即使是有权访问所有源代码的管理员或开发人员也不应该修改它.
我假设由于具有完全代码访问权限的人可以轻松地创建新签名(签名需要以编程方式完成,因此无需手动密码短语输入),签名在某种程度上需要包含一些其他数据.理想情况下,我应该能够从签名中提取这些数据,例如签名日期和一些字符串.
我的一般方法是使用对称加密.我从所有字段生成哈希,即SHA-512,然后使用哈希作为密码加密该哈希和我的附加数据以获取我的签名.要解密,我的函数会根据文件中的实际数据生成哈希值,并尝试解密签名.这不会是防篡改的,因为很容易生成签名日期和附加信息仍然完整的签名.
由于我不是该领域的专家,我相信我正在尝试重新发明轮子,而且它不是一个非常好的轮子.我只是想知道是否有一些标准方法?我相信我的部分请求是不可能的(毕竟,如果有人控制整个环境,那个人也会控制系统时间),但我仍然想知道这通常是如何解决的?