Problème de cryptage d'un XML

Résolu
Signaler
Messages postés
32
Date d'inscription
jeudi 20 janvier 2005
Statut
Membre
Dernière intervention
11 juin 2007
-
Messages postés
329
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
29 mars 2015
-
Bonjour à tous !

Voilà. Je souhaite faire une application en Flash à démarrer sur un CD-Rom, autonome, mais paramétrable, d'où l'utilisation d'un fichier XML. Ce fichier contient le texte à afficher dans mon application, les images (enfin... les liens vers ces images), des URL externes (liens vers des sites Web), etc.

Mon but est de faire une seconde application, en Flash aussi, permettant d'éditer mon fichier XML, puis de le crypter pour que l'utilisateur du CD-Rom ne puisse pas récupérer le contenu du CD-Rom (en tout cas, pas facilement).
J'ai pensé à un cryptage de type XOR, et j'ai trouvé une fonction sympa, sur un autre site Web :

function xorCoding(chaine, clef) {
   var temp = "";
   for (var i = 0; i<chaine.length; i++) {
      if (chaine.charCodeAt(i) != clef.charCodeAt(i%clef.length)) {
         temp += String.fromCharCode(chaine.charCodeAt(i) ^ clef.charCodeAt(i%clef.length));
      } else {
         temp += chaine.charAt(i);
      }
   }
   return temp;
}
Comme c'est du XOR, j'utilise la même fonction pour le décryptage.
Du coup, je fais un test avec "texte_cryp.text = xorCoding(texte_orig.text, cle.text);" pour le cryptage.
Mais quand je décrypte, je ne retrouve pas mon text d'origine...
Si je recrypte le texte décrypté, et que je le redécrypte, je me retrouve avec le texte précédent, mais pas avec le texte d'origine.

Pour info : je suis sous Flash CS3, et je prog en ActionScript 3.

Merci de votre aide.

2 réponses

Messages postés
32
Date d'inscription
jeudi 20 janvier 2005
Statut
Membre
Dernière intervention
11 juin 2007
1
Bon, je donne une solution que je viens de trouver, même si c'est pas génial niveau sécurité :

 

<!--ec1-->function xorCoding(chaine) {
    var codage = 4096;        //Permet de définir le niveau de codage. Ici : 12 bits
                    //Note : on peut monter jusqu'à 16 bits - 1 ( soit 65535)
    var temp = "";
    for (var i = 0; i<chaine.length; i++) {
        temp += String.fromCharCode(chaine.charCodeAt(i) ^ codage);
    }
    return temp;
}

Dans ma variable "codage", j'indique plus ou moins le niveau de codage de mes charactères ASCII.
Je pense que les calculs sont limités à 65535 car au delà, je dépasse la limite de mon type de variable.

Seulement, je suis loin d'avoir une protection efficace, vu que je n'ai plus de clé de cryptage, mais juste un entier qui sert à mon ou exclusif... J'y perd pas mal, niveau sécurité...
Tout celà me renvoie un "texte" au format UNICODE... et voilà !

Par contre, pour la fonction précédente, je ne comprend pas pourquoi le texte final, après l'encryptage, n'était pas bon...
Je comprend le principe de l'algo : faire un "ou exclusif" avec le code ASCII de mon charactère du texte et avec celui de la clé, en incrémentant à chaque fois l'ID (emplacement sur la chaine de charactère) du charactère à utiliser... Mais je comprend pas pourquoi ça plante.

Des idées peut être ??

 
Messages postés
329
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
29 mars 2015
3
    Yep ! saluté !
dis tu crois que ce principe est applicable à un fichier image chargé depuis Flash ...
exemple je crypte mon image sur le serveur pour que personne ne puisse l'afficher même en ayant l'URL directe de l'image

et dans flash je loadMovie ce fichier chargé puis je le passe dans la moulinette de décryptage...et j'affiche l'image dans un clip à la cool ...
faisable d'après toi ?
@+