2009-12-29 93 views
1

对不起不断地问这么多问题,但你们似乎总是那么好,乐于助人......完整性和真实性

我需要做一些应用程序从文件导入数据。例如,用户选择一个文件,应用程序将一些数据导入数据库。

但我一直在想,这种应用会导致文件的完整性和真实性问题。如果用户更改文件,则不允许应用程序使用该信息。如果一个文件不是来自众所周知的源文件,那么应用程序就不能使用该文件。

我该如何做这种事?

P.S:我使用C#.NET

+0

如果您有可能做到这一点,您可以在创建文件后立即对文件签名。我想有很多关于签署文件的tuto ... – Atmocreations 2009-12-29 11:51:15

+0

这不会提供问题的答案。要批评或要求作者澄清,请在其帖子下方留言。 – 2012-11-18 14:21:27

回答

2

如果你能控制的源文件格式,你可以嵌入一个数字签名。如果您将签名基于文件内容的散列,那么您可以确定该文件来自受信任的来源,并且没有被篡改。

0

这取决于你有多强需要这种保护。

例如,您可以有一个xml文件(用于人类可读性),其中包含原始文件(+ salt)的散列的散列节点。这可以通过程序进行更新,但用户可能需要花费更多的时间来弄清楚这个关键的含义。当程序打开文件时,它会计算散列并检查它是否与文件中写入的相同。

您甚至可以更进一步并使用数字签名,但这样更加复杂。

+0

只是一个散列只会增加默默无闻,并非实际的保证。用户总是可以重新生成一个散列。然后,他们总是可以破解二进制文件(假设它不是一个Web应用程序)并完全禁用完整性检查。 – Novelocrat 2010-10-20 01:10:29

+0

哈希函数是不可能扭转的,唯一的方法就是使用彩虹表。但是如果你把盐放在输入上,它会使彩虹桌无法使用。 – 2010-10-23 08:35:42