[Cyptographie] Caractères spéciaux et Rijndael [Résolu]

Utilisateur anonyme - 4 févr. 2015 à 23:35 - Dernière réponse :  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
Afficher la suite 

4 réponses

Répondre au sujet
cptpingu 3784 Messages postés dimanche 12 décembre 2004Date d'inscriptionModérateurStatut 18 avril 2018 Dernière intervention - Modifié par cptpingu le 5/02/2015 à 11:32
0
Utile
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
Commenter la réponse de cptpingu
Utilisateur anonyme - 5 févr. 2015 à 11:58
0
Utile
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.

Commenter la réponse de Utilisateur anonyme
cptpingu 3784 Messages postés dimanche 12 décembre 2004Date d'inscriptionModérateurStatut 18 avril 2018 Dernière intervention - Modifié par cptpingu le 5/02/2015 à 12:09
0
Utile
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
Commenter la réponse de cptpingu
Utilisateur anonyme - 5 févr. 2015 à 20:40
0
Utile
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+
Commenter la réponse de Utilisateur anonyme

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.