2017-10-05 4 views
0

Je construis une interface graphique en utilisant C# (Windows Form). Fondamentalement, mon interface graphique génère un fichier (format .CSV). Par exemple, supposons que mon interface graphique a généré le fichier .csv suivant.Est-il possible de faire CRC vérifier un fichier .CSV en utilisant des formulaires Windows C#

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

Maintenant, je vais être une fonction où en œuvre mon GUI devrait relire le fichier ci-dessus et généré lors de la lecture en arrière, je veux valider le fichier avant de lire parce que .csv et afficher son contenu dans mon GUI, je veux valider si l'utilisateur a modifié le contenu du fichier manuellement ou non.

Désormais, je vérifie simplement s'il existe une méthode de vérification CRC pour valider le fichier? ou s'il vous plaît me suggérer toute autre méthode pour valider/trouver si l'utilisateur a modifié le fichier manuellement ou non?

+2

Comment allez-vous tenir les références au fichier que vous avez créé? La réponse ci-dessous montre une méthode de création d'une forme de somme de contrôle - mais vous devez savoir quelle devrait être la valeur correcte lorsque vous lisez le fichier. – PaulF

+1

@PaulF est correct. Vous devez stocker la somme de contrôle dans un fichier séparé ou dans le fichier CSV si vous ne pouvez pas le stocker en mémoire. –

+1

Il n'y a pas grand intérêt à demander une vérification CRC, il est beaucoup plus simple et plus infaillible de simplement calculer le hachage. Facilement disponible dans .NET de SHA1Managed et amis. –

Répondre

1

Obtenir cette classe

crc32 class

puis l'utiliser comme ça

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

Pouvez-vous s'il vous plaît donner plus de détails à ce sujet. Ai-je besoin d'incorporer le code ci-dessus lors de la génération du fichier CSV ou lors de la relecture du fichier CSV généré? – kaviarasan

+1

vous devez l'utiliser dans les deux sens, par exemple .. après avoir généré le fichier et avant de le stocker dans la base de données ou l'envoyer au client, vous créerez le hachage crc32 et le stockez quelque part (DB, fichier CSV etc) avec le nom du fichier. Ainsi, lorsque vous souhaitez valider un fichier, vous générez le hachage et comparez le hachage avec le hachage du nom de fichier que vous avez stocké lorsque vous avez créé le fichier. –

+1

Exemple -> Je viens de générer un fichier csv avec le nom report_05_10_2017.csv, avant de stocker le fichier quelque part ou le donner au client je vais passer le fichier par la méthode ci-dessus et obtenir le CSVCrc32hash ... Ensuite, je peux créer une table dans le DB comme ID, FileName, CRC32Hash et y stocker les noms de fichiers avec leurs hashes .. quand vous voulez valider un fichier avec le nom report_05_10_2017.csv vous allez créer à nouveau un hachage pour le fichier et le comparer avec le hachage dans la DB si elles sont identiques, ils auront le même hachage –