我有一个C#程序,其中有一个文件用于读写一些信息。我需要用户无法更改该文件的内容,我需要一种方法来检查该文件是否正确(未被用户更改)。如果您有任何想法,请写下来,我们一起讨论。
using (FileStream fs1 = new FileStream(path, FileMode.Open, FileAccess.Read))
{
using (StreamReader rd1 = new StreamReader(fs1))
{
while ((str = rd1.ReadLine()) != null)
{
//do stuff
}
}
}
public static void Main(string[] args)
{
using (HashAlgorithm hashAlg = new SHA1Managed())
{
using (Stream file = new FileStream("C:\\test.txt", FileMode.Open, FileAccess.Read))
{
byte[] hash = hashAlg.ComputeHash(file);
Console.WriteLine(BitConverter.ToString(hash));
}
}
}
或者
BitConverter.ToString(MD5.Create().ComputeHash(File.ReadAllBytes("C:\\test.txt")))
你不能限制用户在文件系统中操作,但你的应用程序可以存储文件参数(创建和修改时间戳,大小)并对其内容创建哈希值,以便在下次使用文件之前与这些值进行比较。
更新:
如果你想避免用户以任何方式修改文件,你必须限制他们除了读取之外的访问权限。所以你有两个选择: