[Cyptographie] Caractères spéciaux et Rijndael

Résolu
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> ).

Merci d'avance

4 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
Modifié par cptpingu le 5/02/2015 à 11:32
Salut.

Une erreur courante, on ne dit pas "cyptage" mais "chiffrement" (attention ça ne veut pas dire la même chose).
Voir: http://codes-sources.commentcamarche.net/forum/affich-10026341-faute-d-orthographe-et-de-sens-sur-une-categorie

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.

__________________________________________________________________________________________________

Améliorez votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
0
Utilisateur anonyme
5 févr. 2015 à 11:58
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.

0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
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 "/".

__________________________________________________________________________________________________

Améliorez votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
0
Utilisateur anonyme
5 févr. 2015 à 20:40
Salut!

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 !

A+
0
Rejoignez-nous