Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2558 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Cryptographie javascool

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Cryptographie javascool

n°2224234
paranova
Posté le 06-04-2014 à 18:24:34  profilanswer
 

Bonjour a tous,  
 
Je suis actuellement en terminale et j'ai comme épreuve au BAC l'épreuve d' ISN (informatique et sciences du numérique).  
 
J'ai choisi comme projet final la cryptographie en java en utilisant une fonction affine (pour l'instant je n'utilise que les majuscules)  
 
Donc j'ai réussi a écrire la première partie de l’algorithme qui permet de coder, en utilisant le code ascii de chaque lettre. Donc je rentre mon a et mon b pour pouvoir faire y=ax + b (y est le code ascii codé et x le code ascii non changé)  
 
Voila la formule que j'utilise : MessageCode = MessageCode + (char)((((a * MessageInter[i]) -65 + b) %26) +65);
 
MessageCode étant le message codé, et MessageInter[i] le code ascii de ma lettre, et que je prend dans un tableau au préalable défini .
 
Ensuite le messagecode est de nouveau transformé en lettre et mon message est codé :  tout cela marche
 
Mon problème est pour le décodage. Utilisant un modulo, je ne peux pas faire l'inverse du modulo donc j'ai décider d'utiliser un tableau a double dimension: dans la première ligne, le code ascii de mes lettres non codées et dans la seconde mes lettres codées.  
 
Mais je n'arrive pas a faire en sorte que, lorsque je rentre une lettre, il décode le code ASCII, "remonte d'une ligne" pour trouver le code ascii correspondant non coder et ensuite le retransformer en lettre.  
 
Donc en résumé ça ferait: Je rentre une lettre ---- il trouve son code ascci --- il remonte d'une ligne --- trouve son code ascii non codé --- transforme en lettre  
 
Voila l'algorithme entier :  
 
 
 
 
 
void main() {
 
   clear();
 
   int MessageInter [];
 
   MessageInter = new int [100];
 
   //Taille limitée à 100 pour le message à crypter
 
    int i,c,a,b;
 
   c = readInt("Tapez:  1 pour Cryptage | 2 pour Décryptage" );
 
   a = readInt("quelle valeur de a voulez vous prendre?" );
 
   b = readInt("quelle valeur de b voulez vous prendre" );
 
   char alphabet_code [] [];
 
   //déclaration du tableau  
 
    alphabet_code = new char [2] [100];
 
   // deux colones 100 ligne  
 
    if (c ==1) {
 
      String MessageClair;
 
      // Déclaration des variables
 
       String MessageCode = "";
 
      //vaut 0  
 
       println("Texte à crypter ?" );
 
      // Demande du message e
 
       MessageClair = readString();
 
      // demande le message a coder
 
       println("Le message à crypter est" + "\n" + MessageClair);
 
      // On sépare chaque caractère du message et on met son code ascii décalé de 65 dans le tableau
 
       for (i =0; i <= MessageClair.length() -1; i ++) {
 
         //message en lettre transformé en chiffre
 
          MessageInter[i] = (int)(MessageClair.charAt(i));
 
      }
 
      for (i =0; i <= MessageClair.length() -1; i ++) {
 
         MessageCode = MessageCode + (char)((((a * MessageInter[i]) -65 + b) %26) +65);
 
         //prend la première lettre transformée
 
          //de chiffre fais - 65  
 
          //(pour mettre a=0) puis clef donne le décalage ,  
 
          //modulo 26 pour etre compris dans l'alfabet + 65 pour repasser en ascii  
 
       }
 
      // Affichage du résultat.
 
       println("Le cryptogramme est" + "\n" + MessageCode);
 
   }
 
   if (c ==2) {
 
      for (int k =0; k <=1; k ++) {
 
         if (k ==0) {
 
            for (int j =0; j <=25; j ++) {
 
               alphabet_code[k] [j] = (char)(j +65);
 
               // remplissage de la première colone avec les majuscules  
 
             }
 
         } else {
 
            for (int j =0; j <=25; j ++) {
 
               alphabet_code[k] [j] = (char)((a * j + b) %26 +65);
 
               // remplissage deuxième colonne avec les majuscules codées
 
                System.out.println(alphabet_code [k] [j]);
 
               //affiche le tableau  
 
             }
 
         }
 
      }
 
   }
 
   String Message;
 
   println("Texte à décrypter ?" );
 
   Message = readString();
 
}
 
//message inter message mis en chiffre millieu  
 
//message clair message qu'on veur coder depart  
 
//message code: finalité fin
 
 
 
 
 
 
Pouvez vous m'aider a le terminer svp ? Si vous voulez que je vous envoie le .jvs par mail, dites le moi  
 
Merci de votre aide
 
Florian

mood
Publicité
Posté le 06-04-2014 à 18:24:34  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Cryptographie javascool

 

Sujets relatifs
Besoin d'aide su javascool (génération aléatoire d'image)Urgent!!! programe qui valide un mail en javascool
programmation sur javascool, effets sur images.Programation sous javascool
[Java - cryptographie] Problème de vérification de signature[Java - Cryptographie] Décryptage RSA par block (multipart decryption)
Exercice de cryptographie? fichier cpp à complèter?Java implementation de l'algorithme DES en cryptographie
API Windows cryptographieQuestion générale sur la cryptographie
Plus de sujets relatifs à : Cryptographie javascool


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR