C# 完整性和真实性

C# 完整性和真实性,c#,file,integrity,authenticity,C#,File,Integrity,Authenticity,很抱歉一直问这么多问题,但你们看起来总是很好,很乐于助人 我需要做一些从文件导入数据的应用程序。例如,用户选择一个文件,应用程序将一些数据导入数据库 但我一直在想,这种应用程序会导致文件的完整性和真实性问题。如果用户更改了文件,则不允许应用程序使用该信息。如果一个文件不是来自已知的源,则应用程序无法使用该文件 我怎么做这种事 注:我正在使用C#.NET如果你能控制源文件格式,你可以嵌入数字签名。如果签名基于文件内容的散列,则可以确保该文件来自受信任的源,并且未被篡改。如果可以控制源文件格式,则可

很抱歉一直问这么多问题,但你们看起来总是很好,很乐于助人

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

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

我怎么做这种事


注:我正在使用C#.NET

如果你能控制源文件格式,你可以嵌入数字签名。如果签名基于文件内容的散列,则可以确保该文件来自受信任的源,并且未被篡改。

如果可以控制源文件格式,则可以嵌入数字签名。如果您将签名建立在文件内容的散列上,则可以确保文件来自可信来源,并且未被篡改。

数字签名提供身份验证和完整性

如果控制文件格式,请遵循driis的建议

或者,如果文件是XML,则使用

使用C#/.NET:


认证和完整性由数字签名提供

如果控制文件格式,请遵循driis的建议

或者,如果文件是XML,则使用

使用C#/.NET:


这取决于您希望这种保护的强度

例如,您可以有一个xml文件(为了人类可读性),该文件的某个地方有一个散列节点,其中包含原始文件(+salt)的散列。这可以通过程序进行更新,但用户很难理解该键的含义。当程序打开文件时,它计算散列并检查它是否与写入文件的散列相同


您甚至可以更进一步,使用数字签名,但这要复杂得多。

这取决于您希望这种保护的强度

例如,您可以有一个xml文件(为了人类可读性),该文件的某个地方有一个散列节点,其中包含原始文件(+salt)的散列。这可以通过程序进行更新,但用户很难理解该键的含义。当程序打开文件时,它计算散列并检查它是否与写入文件的散列相同


你甚至可以更进一步,使用数字签名,但这要复杂得多。

仅仅是一个散列只会增加模糊性,而不是实际的保证。用户始终可以重新生成哈希。同样,他们可以破解二进制文件(假设它不是web应用程序)并完全禁用完整性检查。哈希函数不可能反转,唯一的方法是使用rainbow表。但是如果你在输入上加了盐,彩虹表就不可用了。仅仅一个散列只会增加模糊性,而不是实际的保证。用户始终可以重新生成哈希。同样,他们可以破解二进制文件(假设它不是web应用程序)并完全禁用完整性检查。哈希函数不可能反转,唯一的方法是使用rainbow表。但是如果你在输入上加了盐,就会使rainbow表无法使用。如果你有可能的话,你可以在文件创建后立即对其进行签名。我猜有很多关于签署文件的图图…这并不能回答这个问题。若要评论或要求作者澄清,请在其帖子下方留下评论。如果您有可能,您可以在文件创建后立即签名。我猜有很多关于签署文件的图图…这并不能回答这个问题。若要评论或要求作者澄清,请在其帖子下方留下评论。