2017-10-05 53 views
0

我正在使用C#(Windows窗体)构建一个GUI。基本上,我的GUI生成一个文件(.CSV格式)。是否有可能使用Windows窗体C#对文件进行CRC校验?#

例如,假设我的GUI生成以下.csv文件。

Username, Password, MachineID abc, abc, 123 jkl, jkl, 789 rst, rst, 456

现在,我将实现一个功能,我的GUI应该读回上面生成的文件,并在阅读后,我要验证的文件,因为读取.csv文件,并显示其内容为在我GUI,我想验证用户是否手动更改文件内容。

今后我只是检查是否有任何CRC校验方法验证文件?或者建议我使用其他方法来验证/查找用户是否手动修改了文件?

+2

你将如何坚持你所创建的文件引用?下面的答案显示了一种创建校验和形式的方法 - 但是当您读取文件时,您需要知道正确的值应该是什么。 – PaulF

+1

@PaulF是正确的。如果无法将其存储在内存中,则需要将校验和存储在单独的文件中或作为CSV文件的一部分。 –

+1

要求CRC校验没有太大意义,只需计算散列就简单多了。从SHA1Managed和朋友可以在.NET中快速获得。 –

回答

1

获取类

crc32 class

,然后用它像

DamienG.Security.Cryptography.Crc32 crc32 = new DamienG.Security.Cryptography.Crc32(); 
      String CSVCrc32hash = String.Empty; 


      foreach (byte b in crc32.ComputeHash(**here your csv file bytes in byte[] format**)) 
      { 

       CSVCrc32hash += b.ToString("x2").ToLower(); 
      } 

//the CSVCrc32hash is the hash 
+0

请您详细说明一下。生成CSV文件时还是读取生成的CSV文件时,是否需要合并上述代码? – kaviarasan

+1

你需要在两种方式中使用它,例如..生成文件之后,在将其存储在数据库中或发送给客户端之前,您将创建crc32散列并将其存储在某处(数据库,CSV文件等)以及文件名称。所以,当你想验证一个文件时,你将生成散列,并将该散列与你在创建文件时存储的文件名的散列进行比较。 –

+1

示例 - >我刚生成一个名为report_05_10_2017.csv的csv文件,在我将文件存储到某处或将其提供给客户端后,我将通过上述方法传递文件并获取CSVCrc32hash ...然后,我可以创建数据库中的一个表,如ID,FileName,CRC32Hash,并在那里存储文件名以及它们的散列值。当您想要使用名称report_05_10_2017.csv验证文件时,您将再次为该文件创建一个散列并将其与散列在数据库中,如果它们相同,它们将具有相同的散列 –

相关问题