数字签名 - 当用户进行微小更改时传输excel文件会导致不同的签名。

时间:2012-10-05 14:26:51

标签: excel unique digital-signature

我有一个应用程序将特定的Excel文件转换为XML并将其传输到另一个应用程序。传输中的一个要求是在XML中具有唯一编号标记(REFNUM)。这样做的原因是为了避免同一文件的多次传输。

我的直观方法是创建文件的数字签名(MD5 / SHA)并将签名嵌入REFNUM标记中(将十六进制转换为十进制后)。

问题在于,有时用户可以简单地进行一些小改动,例如调整其中一个列并创建完全不同的签名。因此,从系统的角度来看,这是一个从未传输过的新文件。

问题:如何避免它或数字签名不是正确的解决方案?谢谢!

1 个答案:

答案 0 :(得分:1)

请勿使用加密哈希/数字签名。它们的设计使得文件中任何位置的单个位更改都将生成完全不同的散列/签名。其他选项可能是一个简单的串行计数器,对于每个“重大”变化递增(但如何确定不清楚),或者可能是时间戳(可能与关于作者或系统的其他信息相结合),或类似于UUID,或者甚至可能只是一个随机数(选择足够大的范围,但碰撞的可能性足够低)。