Utilisateur anonyme
-
Modifié par remi.heneault le 4/02/2015 à 23:49
Utilisateur anonyme -
5 févr. 2015 à 20:40
Bonjour à tous :)
Je suis en train de programmer un soft qui permet de crypter toute une clé USB à l'aide d'un algorithme de Rijndael 128 bits. Cela comprend aussi les noms de fichier et leur extension, seulement parfois le nom de fichier crypté va contenir un "/" et la fonction suivante chargée d'écrire ce fichier ne pourra pas le créer.
(Du moins c'est mon hypothèses, toutes les erreurs viennent des fichiers contenant un / dedans, les autres s'écrivent bien.)
Y a-t-il un moyen d'éviter d'avoir des "/" en sortie ?
J'utilise la méthode RijndaelManaged() de System.Security.Cryptography, et Encoding.UTF32.GetBytes( <nom_du_fichier> ).
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023124 Modifié par cptpingu le 5/02/2015 à 11:32
Pour ton souci de /, il faut, lorsque tu déchiffres, non pas créer le fichier en mode "écris moi le fichier /toto/tutu/titi.txt", mais:
créer via "mkdir -p" (ou équivalent) l'aborescence "/toto/tutu/", puis créer le fichier "titi.txt" dedans.
En revanche, es-tu sur d'être en C++ ? Ce que tu décris n'y ressemble pas du tout.
Merci pour l'info sur le vocabulaire :)
En effet, je fais du C#, pas du tout du C++ ! Il faudrait qu'un modérateur déplace...
Revenons-en à mon problème. Ta méthode ne s'applique pas dans mon programme (je reconnais qu'en lâcher un bout aurait été plus compréhensible) puisque une fonction encrypte le nom du fichier : <application.exe> devient <sIeh4+es> et une autre fonction vient écrire le contenu chiffré avec une adresse de la forme : <C:\\Ancien_répertoire\\sIeh4+es>. Tous les noms de fichiers chiffrés qui ne contiennent pas de "/" sont écris correctement et dans leur répertoire d'origine, seulement ceux avec un slash ne peuvent pas être écrits puisque Windows n'accepte pas ce caractère dans les noms de fichiers (il en va de même pour "?:*|<>" mais ils n'apparaissent pas), la fonction échoue donc.
Je récupère d'ailleurs dans un tableau de string les fichiers qui n'ont pas été créés.
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023124 Modifié par cptpingu le 5/02/2015 à 12:09
Je te l'ai déplacé.
Je ne savais pas que tu étais sous Windows (le "/" est typique de Linux). En solution simple, tu chiffres ton fichier, et s'il y a un "/" dedans, tu le remplaces par un autre caractère non utilisé dans ta fonction de chiffrement. Pour déchiffrer tu ajoutes une étape supplémentaire pour le remettre.
Tu peux aussi modifier ta fonction de chiffrement pour que celle-ci ne génère pas de "/".
J'ai créé une fonction qui reprend le nom de fichier chiffré et remplace les "/" par des ")", caractère qui n'apparaissait pas avant et ça marche, merci !