Aller au contenu
wayposey

ISN terminale S

Messages recommandés

Bonjour, bonsoir à tous,

 

Je suis actuellement en terminale S et j'ai comme projet en isn de faire un programme qui permet de crypter decrypter du chiffrement affine. Pour faire simple voila en quoi consiste le chiffrement affine :Le chiffre Affine utilise une fonction de chiffrement par addition et multiplication (comme la fonction mathématiques affine) qui fait correspondre à une lettre L (de rang x dans un alphabet de 26 lettres) une autre lettre de rang (ax + B) modulo 26.

 

J'ai donc commencer un programme seulement la partie crytage pour le moment mais je ne comprends pas pourquoi il ne fonctionne pas.

 

Je veux par exemple transformer la phrase "lhomme" avec les coefficients "a" et "b" respectivement égaux à 7 et 13 mon programme m'affiche "CAXJJF" alors que quand je le fais à la main je trouve: "MKHTTP" si quelqu'un à une idée je suis preneur :)

 

code: 
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 = (int)(MessageClair.charAt(i)); 
 
      } 
 
      for (i =0; i <= MessageClair.length() -1; i ++) { 
 
         MessageCode = MessageCode + (char)((((a * MessageInter) -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'alphabet + 65 pour repasser en ascii  
 
       } 
 
      // Affichage du résultat. 
 
       println("Le cryptogramme est" + "\n" + MessageCode); 
 
   } 
}

isn cryptage.java

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 14 heures, Pyrithe a dit :

Bonjour,

 

Je déplace le sujet dans la section Développement.

Merci de passer par la section "Présentation" aussi.

Merci je suis nouveau je savais pas :)

 

Il y a 11 heures, MathTek a dit :

Hello,

 

vu que tu es en terminale, il est important que tu utilise les bons mots. On ne dit pas crypter !
Je te laisse consulter ce site si tu veux plus d'infos: https://chiffrer.info/
Et passe le a tes profs parce que malheureusement je penses qu'il ne le savant pas non plus ...

Désolé pour l'erreur haha

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

×