Partage
  • Partager sur Facebook
  • Partager sur Twitter

Cryptage

à mach' pas!

    16 octobre 2008 à 22:30:59

    J'ai fait un pitit (mon premier ^^) programme de cryptage juste de texte tout simple, je débute juste juste en java, ete je suis en premiere, j'ai donc bof le temps de programmer! :colere2::euh:^^
    Mais bon, j'ai reussit à faire ce programme... qui m'affiche ceci lors du test :

    Mettez ici votre texte a crypter : 
    bonjour
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7
            at crypte.StringToInt(crypte.java:58)
            at crypte.main(crypte.java:95)


    voici mon code source :
    import java.util.Scanner;
    
    
    public class crypte {
    	public static String[] decrypte(String[] g, String s, int[] y){
    		int t = s.length();
    		String[] decrypt=new String[t];
    		for(int j=0; j<=t;j++){
    			decrypt[j] = CryptToString(y,s); 
    			}
    		return decrypt;
    		
    	}
    	public static String CryptToString(int[] j, String s){
    		int t = s.length();
    		String g="";
    		for(int i=0; i<=t; i++){
    			if(j[i]==6341){g="a";}
    			if(j[i]==4065){g="b";}
    			if(j[i]==445){g="c";}
    			if(j[i]==9782){g="d";}
    			if(j[i]==05){g="e";}
    			if(j[i]==787){g="f";}
    			if(j[i]==786){g="g";}
    			if(j[i]==864){g="h";}
    			if(j[i]==5){g="j";}
    			if(j[i]==7865){g="k";}
    			if(j[i]==46){g="l";}
    			if(j[i]==846){g="m";}
    			if(j[i]==3240){g="n";}
    			if(j[i]==4685){g="o";}
    			if(j[i]==4826){g="p";}
    			if(j[i]==846){g="q";}
    			if(j[i]==778){g="r";}
    			if(j[i]==98){g="s";}
    			if(j[i]==6){g="t";}
    			if(j[i]==450){g="u";}
    			if(j[i]==47){g="v";}
    			if(j[i]==4568){g="w";}
    			if(j[i]==456){g="x";}
    			if(j[i]==45){g="y";}
    			if(j[i]==4800){g="z";}
    		}
    		return g;
    	} 
    	public static String[] stringToTab (String s){
    		int text = s.length();
    		String[] tab = new String [text];
    		for (int i=0; i<text; i++){
    			tab [i] = s.substring(i, i+1);
    		}
    		return tab;	
    	}
    	public static int StringToInt (String[] j, String s){
    		int t = s.length();
    		int k = 0;
    		for(int i=0; i<=t;i++){
    			if(j[i].equals("a")){ k = 6341;}
    			if(j[i].equals("b")){ k = 4065;}
    			if(j[i].equals("c")){ k = 445;}
    			if(j[i].equals("d")){ k = 9782;}
    			if(j[i].equals("e")){ k = 05;}
    			if(j[i].equals("f")){ k = 787;}
    			if(j[i].equals("g")){ k = 786;}
    			if(j[i].equals("h")){ k = 864;}
    			if(j[i].equals("j")){ k = 5;}
    			if(j[i].equals("k")){ k = 7865;}
    			if(j[i].equals("l")){ k = 46;}
    			if(j[i].equals("m")){ k = 846;}
    			if(j[i].equals("n")){ k = 3240;}
    			if(j[i].equals("o")){ k = 4685;}
    			if(j[i].equals("p")){ k = 4826;}
    			if(j[i].equals("q")){ k = 846;}
    			if(j[i].equals("r")){ k = 778;}
    			if(j[i].equals("s")){ k = 98;}
    			if(j[i].equals("t")){ k = 6;}
    			if(j[i].equals("u")){ k = 450;}
    			if(j[i].equals("v")){ k = 47;}
    			if(j[i].equals("w")){ k = 4568;}
    			if(j[i].equals("x")){ k = 456;}
    			if(j[i].equals("y")){ k = 45;}
    			if(j[i].equals("z")){ k = 4800;}
    		}
    		return k;
    	}
    
    	public static void main (String[] args){
    		System.out.println("Mettez ici votre texte a crypter : ");
    		Scanner sc = new Scanner(System.in);
    		String text = sc.next();
    		String[] textCoupe = stringToTab(text);
    		int k = text.length();
    		int[] tabCrypte=new int[k];
    		for(int i=0; i<=k;i++){
    			tabCrypte[i]=StringToInt(textCoupe, text);
    		}
    		System.out.println("Votre texte ext crypté... indiquez ici votre mot de passe pour le decrypter : ");
    		String mdp = sc.next();
    		System.out.println("Indiquez votre mod de passe pour decrypter votre text : ");
    		String mdp2 = sc.next();
    		if(mdp == mdp2){
    			System.out.println(decrypte(textCoupe, text, tabCrypte));
    				
    			}
    		else{
    			System.out.println(tabCrypte);
    		}
    		}
    	}
    


    svp aidez moi, j'etais content de moi même, masi sa ma trop fait chier sa a la fin...
    Mais je garde espoire! ^^
    Bon, je révise mon ***** de devoir de latin que j'ai demain (encore un boite en perspective! ^^ et je code moi! halalalalala :lol: )


    [edit] bon, je vais me coucher, j'espere que demain, je trouverai un oeuf tout beau qui m'atendra dasn ce topic! ^^;)
    • Partager sur Facebook
    • Partager sur Twitter
      16 octobre 2008 à 23:51:35

      Bon déjà ton erreur vient du fait que tu sors des limites de ton tableau. Ensuite, je comprends pas pourquoi tes méthodes fonctionnent avec des String puisque tu n'utilises que des char au final. Ensuite, ta méthode public static int StringToInt (String[] j, String s); n'aura sans doute pas le comportement voulu, puisque tu auras comme valeur celle du dernier String du tableau j. Puis que fais tu si on envoie un String[] {"ab", "cd"} à ta fonction ? on retourne 0 ? moyen. Soit tu fais une méthode interne qui tourne avec des char et qui retourne un int[] pour ensuite l'encapsuler dans une méthode qui prend un String et qui le déroule avec des charAt(int); en appelant itérativement ta méthode qui prend un char. Ensuite ta méthode de cryptage est pas forcément très solide, essaye plutot de partir du code ascii d'un caractère, et de le manipuler pour le crypter. Regarde du côté du codage RSA par exemple qui doit pas être trop dur à mettre en place si tu as vu les ensembles finis Z/nZ. Même avec des nombres premiers relativements petits c'est déjà pas trop mal à implémenter.
      • Partager sur Facebook
      • Partager sur Twitter
        17 octobre 2008 à 17:52:55

        okay, je médite sur ton texte, et je revient quand j'ai mis tout ce que tu m'as dit! ^^ merci en tout cas
        • Partager sur Facebook
        • Partager sur Twitter

        Cryptage

        × 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