2009-12-29 84 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