Partage
  • Partager sur Facebook
  • Partager sur Twitter

Cryptage de César en Java

Déchiffrement par décalage en Java

Sujet résolu
    14 mars 2012 à 16:14:27

    Bonjour tout le monde;

    Voilà, j'ai appris en classe le cryptage de César (ou de décalage) et j'ai écrit un programme qui me fait un déchiffrement des mots que l'utilisateur aura entré. Le problème (qui est assez bête quand même) est que le caractére espace n'est pas pris en compte, quand un utilisateur entre deux mots séparés par le caractére espace, dans le résultat, mon programme change le caractère espace en 'a', mais si je tape seulement un mot à déchiffrer, le programme marche parfaitement!

    Voici le programme en question:

    public class Cesar {
    	public static void main(String[] args) {
    
    		char alphabet[] = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'g',
    				'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
    				'w', 'x', 'y', 'z' };
    		String texte;
    		char cle;
    		int i, j, key_value = 0, value;
    		System.out.println("Veillez entrer le texte à déchiffrer");
    		texte = Lire.S();
    		int[] element = new int[texte.length()];
    		char[] dechiffre = new char[texte.length()];
    		System.out.println("Donnez la valeur de la clef de dechiffrement");
    		cle = Lire.c();
    		for (j = 0; j < alphabet.length; j++) {
    			if (cle == alphabet[j]) {
    				key_value = j;
    			}
    		}
    		System.out.println("La clef de déchiffrement vaut " + key_value);
    		for (i = 0; i < texte.length(); i++) {
    			for (j = 0; j < alphabet.length; j++) {
    				if (texte.charAt(i) == alphabet[j]) {
    					value = j - key_value;
    					if (value < 0) {
    						value = 26 + value;
    					} else {
    						value = value;
    					}
    					if (value >= 26) {
    						element[i] = value % 26;
    					} else {
    						element[i] = value;
    					}
    				}
    			}
    		}
    		for (i = 0; i < texte.length(); i++) {
    			if (texte.charAt(i) == ' ') {
    				dechiffre[i] = texte.charAt(i);
    			}
    			for (j = 0; j < alphabet.length; j++) {
    				if (element[i] == j) {
    					dechiffre[i] = alphabet[j];
    					System.out.print(dechiffre[i]);
    				}
    			}
    		}
    	}
    }
    


    Remarque: J'ai utilisé une classe lire pour les entrées au clavier au lien du scanner; voici son code:
    import java.io.*;
    public class Lire
    {
    public static String S() // Lire un String
    {
    String tmp = "";
    char C='\0';
    try {
             while ((C=(char) System.in.read()) !='\n')
             {
              if (C != '\r')  tmp = tmp+C;
     
             }
       }
     catch (IOException e)
            {
              System.out.println("Erreur de frappe");
              System.exit(0);
            }
     return tmp;
    } // fin de S()
    
     public static byte b()  // Lire un entier byte
     {
      	 byte x=0;
     	 	try {
    			 x=Byte.parseByte(S());
    	  	 	}
     	 	catch (NumberFormatException e) {
              System.out.println("Format numérique incorrect");
              System.exit(0);
        }	
    	  return x ;
     }
    
     public static short s()  // Lire un entier short
     {
       	 short x=0;
     	 	try {
    			 x=Short.parseShort(S());
    	  	 	}
     	 	catch (NumberFormatException e) {
              System.out.println("Format numérique incorrect");
              System.exit(0);
        }	
    	  return x ;
     }
    
     public static int i()  // Lire un entier
     {
     	 int x=0;
     	 	try {
    			 x=Integer.parseInt(S());
      	 	}
     	 	catch (NumberFormatException e) {
              System.out.println("Format numérique incorrect");
              System.exit(0);
        }	
    	  return x ;
     }
    
     public static long l()  // Lire un entier long
     {
     	 long x=0;
     	 	try {
    			 x=Integer.parseInt(S());
      	 	}
     	 	catch (NumberFormatException e) {
              System.out.println("Format numérique incorrect");
              System.exit(0);
        }	
    	  return x ;
     }
    
     public  static double d()  // Lire un double
     {
      	double x=0.0;
     	 	try {
    	 		x=Double.valueOf(S()).doubleValue();
     	 	}
     	 	catch (NumberFormatException e) {
              System.out.println("Format numérique incorrect");
              System.exit(0);
        }	
    	  return x ;
     }
    
     public  static float f()  // Lire un float
     {
       float x=0.0f;
     	try {
     		x=Double.valueOf(S()).floatValue();
        	}
     	catch (NumberFormatException e) 
     	{
              System.out.println("Format numérique incorrect");
              System.exit(0);
        }	
    	  return x ;
     }
    
     public  static char c()  // Lire un caractere
     {
      String tmp=S();
      if (tmp.length()==0)
    	  return '\n';
      else 
    		{
    		return tmp.charAt(0);
    		}
     }
    }
    


    Merci de bien vouloir me filer un coup de main :D
    • Partager sur Facebook
    • Partager sur Twitter
      14 mars 2012 à 16:42:20

      Mon premier et seul conseil : aller lire un cours de Java, un bon.

      Ce que tu as fait, c'est du C écrit en Java. Et encore, je pense que même pour du C c'est crade.
      • Partager sur Facebook
      • Partager sur Twitter
        14 mars 2012 à 16:56:58

        Citation : SpaceFox

        Mon premier et seul conseil : aller lire un cours de Java, un bon.

        Ce que tu as fait, c'est du C écrit en Java. Et encore, je pense que même pour du C c'est crade.



        Merci pour la critique,

        Mais je suis ici pour trouver de l'aide et si tu ne peux pas m'en apporter et bien abstiens toi de poster du n'importe quoi!
        • Partager sur Facebook
        • Partager sur Twitter
          14 mars 2012 à 16:59:52

          Salut, t'as essayé de tester '\s' au lieu de ' '?
          • Partager sur Facebook
          • Partager sur Twitter
            14 mars 2012 à 17:05:59

            Désolé si ce n'est pas exactement ce que tu attends, Bionik6, mais t'aider à modifier cette chose sans la rendre "Javaesque" n'est pas te rendre service.
            • Partager sur Facebook
            • Partager sur Twitter
              14 mars 2012 à 18:00:38

              Citation : SpaceFox

              Désolé si ce n'est pas exactement ce que tu attends, Bionik6, mais t'aider à modifier cette chose sans la rendre "Javaesque" n'est pas te rendre service.



              Je peux mettre ma main au feu que t'as même pas lu le topic exclusivement, donc viens pas troller sur ma discussion.
              • Partager sur Facebook
              • Partager sur Twitter
                14 mars 2012 à 18:49:16

                Cadeau : un chiffre de César en Java qui fonctionne, dans les deux sens, qui gère les majuscules et minuscules, et qui occulte tout ce qui n'est pas "caractères standard de l'alphabet latin" :
                public class Cesar {
                	
                	private static final int TAILLE_ALPHABET = 26;
                	private String texte;
                
                	public Cesar(String texte) {
                		this.texte = texte;
                	}
                	
                	public String chiffre(int decalage) {
                		StringBuilder sb = new StringBuilder(texte.length());
                		for (char c : texte.toCharArray()) {
                			if (c > 'a' && c < 'z') {
                				sb.append(decaleVar(c, decalage, 'a'));
                			} else if (c > 'A' && c < 'Z') {
                				sb.append(decaleVar(c, decalage, 'A'));
                			} else {
                				sb.append(c);
                			}
                		}
                		return sb.toString();
                	}
                	
                	public String dechiffre(int decalage) {
                		return chiffre(-decalage);
                	}
                
                	private char decaleVar(char caractere, int decalage, char caractereBase) {
                		int base = (int) caractereBase;
                		if (decalage < 0) {
                			base += TAILLE_ALPHABET - 1;
                		}
                		return (char) ((((int) caractere) - base + decalage) % TAILLE_ALPHABET + base);
                	}
                	
                	public static void main(String[] args) {
                		Cesar cesar = new Cesar(args[0]);
                		for (int i = 0; i < TAILLE_ALPHABET; i++) {
                			System.out.println(cesar.chiffre(i));
                		}
                		System.out.println("");
                		for (int i = 0; i < TAILLE_ALPHABET; i++) {
                			System.out.println(cesar.dechiffre(i));
                		}
                	}
                }
                

                Tu as le main de test à la fin de la classe. Tu n'as plus qu'à l'adapter à l'entrée que tu veux.

                PS : Ca m'a pris moins de 30 minutes, je n'ai pas d'autre static que le main de test. C'est du Java quoi.
                PPS : Peut-être est-il possible de faire encore plus propre et multilingue avec Character.isLetter() ou toute autre fonction avancée des caractères, mais d'une on sort un peu du sujet, de deux je ne sais pas comment récupérer la longueur d'un bloc de lettres consécutifs (c'est sans doute possible, mais la flemme de vérifier) pour revenir au début du bloc quand on en dépasse la fin.
                • Partager sur Facebook
                • Partager sur Twitter
                  14 mars 2012 à 21:04:28

                  Bah voilà, du concret!

                  Merci de ton aide, pour répondre à ta question, pour recupérer un bloc de lettre consécutifs, tu peux utiliser bloc.charAt() comme je l'ai fait sur mon programme, ça parcourt le mot comme dans un tableau en comptant la première lettre par 0 etc....

                  Je vais essayer le programme et voir ce que ça me donne.

                  Thank you anyway!
                  • Partager sur Facebook
                  • Partager sur Twitter
                    15 mars 2012 à 0:26:28

                    Bonsoir, je vous propose une autre ébauche de solution, je me doute qu'elle ne respecte pas les conventions Java (je débute en Java). Les critiques constructives sont les biens-venues (je ne demande qu'à apprendre).
                    Ce n'est qu'une EBAUCHE qui n'accepte que les minuscules.


                    Class Main
                    import java.io.BufferedReader;
                    import java.io.IOException;
                    import java.io.InputStreamReader;
                    import java.util.Scanner;
                    
                    
                    public class Main {
                    
                            /**
                             * @param args
                             */
                            
                            static String str,reponse="";
                            static char lettre ;
                            static char alpha[] = {' ','a','b','c','d','e','é','è','f','g','h','i','s','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'}; 
                            static char alphaCrypt[] = new char[30] ;
                            static int n;
                            static int decal;
                            
                            public static void main(String[] args) throws IOException {
                                    // TODO Auto-generated method stub
                                    Scanner sc = new Scanner(System.in);
                                    BufferedReader ligne = new BufferedReader(new InputStreamReader(System.in));
                                    
                                    System.out.println("De combien voulez vous décaler");
                                    decal = sc.nextInt();
                                    System.out.println("Entre la phrase à coder");
                                    str = ligne.readLine();
                                    
                                    for (int c=0; c < alpha.length; c++ ){
                                            
                                            if (c+decal < alpha.length){
                                            
                                                    alphaCrypt[c] =alpha[c+decal];
                                            }
                                            else {
                                                    int b = 0;
                                                    alphaCrypt[c] = alpha[b];
                                                    b++;
                                                    
                                            }
                                    }
                                    
                                    for (int i = 0; i<str.length();i++){
                                            lettre = str.charAt(i);  // lecture lettre par lettre
                                            
                                            for (int a=0; a < alpha.length; a++ ){
                                                    // position de la lettre dans le tableau "alpha"
                                                    if (alpha[a] == lettre) {
                                                            n = a;
                                                    }
                                                    
                                            }
                                            lettre = alphaCrypt[n];        
                                            reponse = reponse+lettre;  
                                    
                                    
                                    }
                                    
                                    System.out.println("Phrase codée :");
                                    System.out.println(reponse);
                            }
                    
                    }
                    


                    • Partager sur Facebook
                    • Partager sur Twitter
                      15 mars 2012 à 8:09:45

                      Citation : Bionik6

                      pour répondre à ta question, pour recupérer un bloc de lettre consécutifs, tu peux utiliser bloc.charAt() comme je l'ai fait sur mon programme, ça parcourt le mot comme dans un tableau en comptant la première lettre par 0 etc....


                      C'était pas clair, mais c'est pas du tout ce que je voulais dire.
                      Je parlais des blocs au sens Unicode (a-z en est un, A-Z un autre, ...)
                      • Partager sur Facebook
                      • Partager sur Twitter
                        17 octobre 2012 à 9:19:16

                        Salut , 7 mois plus tard j en suis conscient mais ton decryptage ne fonctionne pas SpaceFox puisque tu utilise seulement la chaine de départ en clair ce qui veut dire que faire un decrypt(3) revient a faire un chiffre(-3) donc un cryptage. En faisant un decryp 0 on retrouve la chaine de départ mais dans ce cas la fonction est inutile car on aurait simplement pu faire return this.texte
                        Je vais me pencher la dessus
                        • Partager sur Facebook
                        • Partager sur Twitter
                          17 octobre 2012 à 9:59:24

                          Je n'ai pas compris en quoi tu considères que mon code ne fonctionne pas;
                          Du coup j'ai vérifié et en effet, mon code ne gérait pas correctement les a et les z (parce que j'avais mis des > et < dans les tests au lieu de >= et <=).

                          Mais le reste fonctionne nickel, comme le prouve cette version :
                          public class Cesar {
                          
                          	private static final int TAILLE_ALPHABET = 26;
                          	private String texte;
                          
                          	public Cesar(String texte) {
                          		this.texte = texte;
                          	}
                          
                          	public String chiffre(int decalage) {
                          		StringBuilder sb = new StringBuilder(texte.length());
                          		for (char c : texte.toCharArray()) {
                          			if (c >= 'a' && c <= 'z') {
                          				sb.append(decaleVar(c, decalage, 'a'));
                          			} else if (c >= 'A' && c <= 'Z') {
                          				sb.append(decaleVar(c, decalage, 'A'));
                          			} else {
                          				sb.append(c);
                          			}
                          		}
                          		return sb.toString();
                          	}
                          
                          	public String dechiffre(int decalage) {
                          		return chiffre(-decalage);
                          	}
                          
                          	private static char decaleVar(char caractere, int decalage, char caractereBase) {
                          		int base = caractereBase;
                          		if (decalage < 0) {
                          			base += TAILLE_ALPHABET - 1;
                          		}
                          		return (char) (((caractere) - base + decalage) % TAILLE_ALPHABET + base);
                          	}
                          
                          	public static void main(String[] args) {
                          		Cesar cesar = new Cesar(args[0]);
                          		String texteChiffre = null;
                          		for (int i = 0; i < TAILLE_ALPHABET; i++) {
                          			texteChiffre = cesar.chiffre(i);
                          			System.out.println(args[0] + " --Chiffre[" + i + "]--> "
                          					+ texteChiffre + " --Dechiffre[" + i + "]--> "
                          					+ new Cesar(texteChiffre).dechiffre(i));
                          		}
                          	}
                          }
                          

                          Modifications effectuées :
                          • Tests qui prennent en compte les a et les z
                          • Suppression de cast inutiles
                          • La méthode de décalage de variable est statique
                          • Le main met en évidence le chiffrage et le déchiffrage d'une même variable

                          Si je lance la commande avec l'entrée abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ j'obtiens bien la sortie :
                          abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ --Chiffre[0]--> abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ --Dechiffre[0]--> abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
                          abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ --Chiffre[1]--> bcdefghijmlmnopqrstuvwxyzaBCDEFGHIJKLMNOPQRSTUVWXYZA --Dechiffre[1]--> abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
                          abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ --Chiffre[2]--> cdefghijknmnopqrstuvwxyzabCDEFGHIJKLMNOPQRSTUVWXYZAB --Dechiffre[2]--> abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
                          abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ --Chiffre[3]--> defghijklonopqrstuvwxyzabcDEFGHIJKLMNOPQRSTUVWXYZABC --Dechiffre[3]--> abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
                          abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ --Chiffre[4]--> efghijklmpopqrstuvwxyzabcdEFGHIJKLMNOPQRSTUVWXYZABCD --Dechiffre[4]--> abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
                          abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ --Chiffre[5]--> fghijklmnqpqrstuvwxyzabcdeFGHIJKLMNOPQRSTUVWXYZABCDE --Dechiffre[5]--> abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
                          abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ --Chiffre[6]--> ghijklmnorqrstuvwxyzabcdefGHIJKLMNOPQRSTUVWXYZABCDEF --Dechiffre[6]--> abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
                          abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ --Chiffre[7]--> hijklmnopsrstuvwxyzabcdefgHIJKLMNOPQRSTUVWXYZABCDEFG --Dechiffre[7]--> abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
                          abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ --Chiffre[8]--> ijklmnopqtstuvwxyzabcdefghIJKLMNOPQRSTUVWXYZABCDEFGH --Dechiffre[8]--> abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
                          abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ --Chiffre[9]--> jklmnopqrutuvwxyzabcdefghiJKLMNOPQRSTUVWXYZABCDEFGHI --Dechiffre[9]--> abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
                          abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ --Chiffre[10]--> klmnopqrsvuvwxyzabcdefghijKLMNOPQRSTUVWXYZABCDEFGHIJ --Dechiffre[10]--> abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
                          abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ --Chiffre[11]--> lmnopqrstwvwxyzabcdefghijkLMNOPQRSTUVWXYZABCDEFGHIJK --Dechiffre[11]--> abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
                          abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ --Chiffre[12]--> mnopqrstuxwxyzabcdefghijklMNOPQRSTUVWXYZABCDEFGHIJKL --Dechiffre[12]--> abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
                          abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ --Chiffre[13]--> nopqrstuvyxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM --Dechiffre[13]--> abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
                          abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ --Chiffre[14]--> opqrstuvwzyzabcdefghijklmnOPQRSTUVWXYZABCDEFGHIJKLMN --Dechiffre[14]--> abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
                          abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ --Chiffre[15]--> pqrstuvwxazabcdefghijklmnoPQRSTUVWXYZABCDEFGHIJKLMNO --Dechiffre[15]--> abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
                          abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ --Chiffre[16]--> qrstuvwxybabcdefghijklmnopQRSTUVWXYZABCDEFGHIJKLMNOP --Dechiffre[16]--> abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
                          abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ --Chiffre[17]--> rstuvwxyzcbcdefghijklmnopqRSTUVWXYZABCDEFGHIJKLMNOPQ --Dechiffre[17]--> abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
                          abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ --Chiffre[18]--> stuvwxyzadcdefghijklmnopqrSTUVWXYZABCDEFGHIJKLMNOPQR --Dechiffre[18]--> abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
                          abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ --Chiffre[19]--> tuvwxyzabedefghijklmnopqrsTUVWXYZABCDEFGHIJKLMNOPQRS --Dechiffre[19]--> abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
                          abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ --Chiffre[20]--> uvwxyzabcfefghijklmnopqrstUVWXYZABCDEFGHIJKLMNOPQRST --Dechiffre[20]--> abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
                          abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ --Chiffre[21]--> vwxyzabcdgfghijklmnopqrstuVWXYZABCDEFGHIJKLMNOPQRSTU --Dechiffre[21]--> abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
                          abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ --Chiffre[22]--> wxyzabcdehghijklmnopqrstuvWXYZABCDEFGHIJKLMNOPQRSTUV --Dechiffre[22]--> abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
                          abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ --Chiffre[23]--> xyzabcdefihijklmnopqrstuvwXYZABCDEFGHIJKLMNOPQRSTUVW --Dechiffre[23]--> abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
                          abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ --Chiffre[24]--> yzabcdefgjijklmnopqrstuvwxYZABCDEFGHIJKLMNOPQRSTUVWX --Dechiffre[24]--> abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
                          abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ --Chiffre[25]--> zabcdefghkjklmnopqrstuvwxyZABCDEFGHIJKLMNOPQRSTUVWXY --Dechiffre[25]--> abcdefghilklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
                          • Partager sur Facebook
                          • Partager sur Twitter
                            17 octobre 2012 à 11:53:55

                            oui voila, les méthodes sont bonnes c' était juste la declaration dans le main ou il faut recréer une instance avec le texte crypté
                            new Cesar(texteChiffre).dechiffre(i)
                            je me suis donc mal exprimé, ça marche mais en recréant une instance avec le texte crypté avant de decrypter.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              17 octobre 2012 à 12:01:09

                              Oui, en fait tu n'as pas compris ce que faisait l'ancien main, c'est tout ;)
                              (Il affichait toutes les possibilités à partir du texte en entrée : tous les chiffrages possibles et tous les déchiffrages possibles en considérant que c'était une entrée chiffrée).
                              • Partager sur Facebook
                              • Partager sur Twitter
                                25 avril 2013 à 23:13:55

                                Bonsoir, je m’intéresse moi aussi un chiffre de cesar en JAVA.

                                Je ne comprend pas trop comment fonctionne ton programme SpaceFox. Ou se trouve ton entrée ?

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  2 mai 2016 à 0:00:25

                                  bonsoir :aide moi pour ecrire  ce procédure en java SVP

                                  Alice et Bob décident de numériser leurs procédures de chiffrement  /déchiffrement  ecrivez alors un programme permettant à Alice et Bob de d’échanger des message chiffrés et de les déchiffré en tout en  ayant la possibilité à chaque de choisir la méthode (entre substitution et transposition) et de pouvoir changer la clé.

                                  -
                                  Edité par HabibaBiba 2 mai 2016 à 0:18:46

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    30 décembre 2016 à 20:28:10

                                    salut 

                                    -
                                    Edité par BenkorichiNourElhouda 30 décembre 2016 à 20:32:36

                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    Cryptage de César en Java

                                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                    • Editeur
                                    • Markdown