2017-10-05 3 views
0

Ich baue eine GUI mit C# (Windows Form). Grundsätzlich erzeugt meine GUI eine Datei (.CSV-Format).Ist es möglich, CRC-Prüfung für eine .CSV-Datei mit Windows-Formularen zu tun C#

Nehmen wir zum Beispiel an, dass meine GUI die folgende .csv-Datei generiert hat.

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

Jetzt werde ich eine Funktion implementieren, wo meine GUI die oben generierten Datei zurückgelesen sollte und beim Lesen wieder mag ich die Datei validieren, weil vor, dass CSV-Datei zu lesen und seinen Inhalt anzuzeigen in meine GUI, Ich möchte überprüfen, ob Benutzer den Dateiinhalt manuell geändert hat oder nicht.

Von nun an überprüfe ich nur, ob es eine CRC-Prüfmethode gibt, um die Datei zu validieren? Oder schlagen Sie mir bitte eine andere Methode vor, um zu überprüfen, ob der Benutzer die Datei manuell geändert hat oder nicht?

+2

verwenden Wie wollen Sie Verweise auf die Datei halten Sie erstellt haben? Die Antwort unten zeigt eine Methode zum Erstellen einer Form der Prüfsumme - aber Sie müssen wissen, was der richtige Wert sein sollte, wenn Sie die Datei zurück lesen. – PaulF

+1

@PaulF ist korrekt. Sie müssen die Prüfsumme entweder in einer separaten Datei oder als Teil der CSV-Datei speichern, wenn Sie sie nicht im Speicher ablegen können. –

+1

Es macht nicht viel Sinn, eine CRC-Prüfung zu fordern, es ist viel einfacher und kugelsicherer, nur den Hash zu berechnen. Verfügbar in .NET von SHA1Managed und Freunden. –

Antwort

1

diese Klasse Get

crc32 class

und dann wie die

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

Kannst du bitte mehr darüber ausarbeiten. Muss ich den obigen Code beim Generieren einer CSV-Datei oder beim Zurücklesen der generierten CSV-Datei einbinden? – kaviarasan

+1

Sie müssen dies auf beide Arten verwenden, zum Beispiel .. nachdem Sie die Datei erzeugt haben und bevor Sie sie in der DB speichern oder an den Client senden, erstellen Sie den crc32 Hash und speichern ihn irgendwo (DB, CSV Datei usw.) zusammen mit dem Dateinamen. Wenn Sie also eine Datei validieren möchten, generieren Sie den Hash und vergleichen den Hash mit dem Hash für den Dateinamen, den Sie beim Erstellen der Datei gespeichert haben. –

+1

Beispiel -> Ich habe gerade eine CSV-Datei mit dem Namen report_05_10_2017.csv generiert, bevor ich die Datei irgendwo speichern oder an den Client weitergeben werde, übergebe ich die Datei mit der obigen Methode und bekomme die CSVCrc32hash ... Dann kann ich erstellen eine Tabelle in der Datenbank wie ID, FileName, CRC32Hash und dort die Dateinamen zusammen mit ihren Hashes speichern. Wenn Sie eine Datei mit dem Namen report_05_10_2017.csv validieren wollen, erstellen Sie erneut einen Hash für die Datei und vergleichen sie mit der Hash in der DB, wenn sie identisch sind, haben sie den gleichen Hash –

Verwandte Themen