private int longueurCleMin(IMessage clair, IMessage crypte,boolean premier) {
		int i=0;
		while(i<clair.taille() && clair.getChar(i)==crypte.getChar(i)) {
			i++;
		}
		int distancePremierCaractere=(crypte.getChar(i)-clair.getChar(i)+26)%26;
		ArrayList<Integer> al=new ArrayList<Integer>();
		int r=i+1;
		for(int j=i+1;j<clair.taille();j++) {
			if((crypte.getChar(j)-clair.getChar(j)+26)%26==distancePremierCaractere || (crypte.getChar(j)-clair.getChar(j)+26)%26==0) {
				al.add(r-i);
			}
			if(clair.getChar(i)==crypte.getChar(i)) {
				r--;
			}
			r++;
		}
		ArrayList<Integer> pos=new ArrayList<Integer>();
		boolean estOK=true;
		for(int z=0;z<al.size();z++) {
			estOK=true;
			for(int k=al.get(z);k<clair.taille()-i;k+=al.get(z))	{
				if(!al.contains(k)) {
					if(al.get(z)==6) {
					}
					estOK=false;
				}
			}
			if(estOK) {
				pos.add(al.get(z));
			}
		}
		int min=pos.get(0);
		for(int q=1;q<pos.size();q++) {
			if(pos.get(q)<min) {
				min=pos.get(q);
			}
		}
		if(!premier) {
			return min;
		}
		else {
			int kn=this.longueurCleMin(Fabrique.fabriquerMessage(clair.toString().substring(i+1)), Fabrique.fabriquerMessage(crypte.toString().substring(i+1)), false);
			if(kn==min) {
				return min;
			}
			else {
				return Math.max(kn,min);
			}
		}
	}