1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
| public class Cryptage {
private static String uniformisation(String message)
{
//Cette fonction permet d'uniformiser le message a coder afin qu'il soit cryptable par la methode de Vigenere :
message=message.toLowerCase();
message=message.replace('ç','c');
message=message.replace('é','e');
message=message.replace('ë','e');
message=message.replace('è','e');
message=message.replace('ê','e');
message=message.replace('à','a');
message=message.replace('â','a');
message=message.replace('ä','a');
message=message.replace('ù','u');
message=message.replace('û','u');
message=message.replace('ü','u');
message=message.replace('ï','i');
message=message.replace('î','i');
message=message.replace('ô','o');
message=message.replace('ö','o');
message=message.replaceAll("£", "livre sterling");
message=message.replaceAll("0", "zeros");
message=message.replaceAll("1", "un");
message=message.replaceAll("2", "deux");
message=message.replaceAll("3", "trois");
message=message.replaceAll("4", "quatre");
message=message.replaceAll("5", "cinq");
message=message.replaceAll("6", "six");
message=message.replaceAll("7", "sept");
message=message.replaceAll("8", "huit");
message=message.replaceAll("9", "neuf");
message=message.replaceAll("@", "at");
message=message.replaceAll("&", "et");
for(int i = 33; i<97;i++){message=message.replace(((char)i), ' ');}
for(int i = 123;i<127;i++){message=message.replace(((char)i), ' ');}
message=message.replaceAll(" ","");
return message;
}
public static String vigenere(String message, String clef)
{
//Creation des variables :
String messageCrypte = "";
int compteur = 0;
final char vigenereUn[] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
char vigenereDeux[] = new char[26];
boolean rep = false;
//Verification de la clef :
for(int i = 0; i<clef.length();i++)
if(clef.charAt(i)!=' ')
rep=true;
if(rep==false || clef==null)
{
//Initialisation de la clef :
for(int i=0; i<message.length(); i++)
{
int j=(int)(Math.random()*25+1);
clef+=vigenereUn[j];
}
//La clef etant generee par le programme elle est donnee a l'utilisateur:
System.out.println("Clef générée : "+clef+"\n");
}
//Uniformisation du message :
message=uniformisation(message);
// //Test du message uniformise :
// System.out.println("Message uniformisé : "+message);
//Uniformisation de la clef :
clef=uniformisation(clef);
// //Test de la clef uniformisee :
// System.out.println("Clef uniformisée : "+clef);
//Extension de la clef pour qu'elle ait la meme taille que le message a crypter :
if(clef.length()< message.length())
for(int i=clef.length(); i<message.length(); i++)
clef+=clef.charAt(i%clef.length());
// //Test de l'extension de la clef :
// System.out.println("Clef etendue :\n"+clef+".\nTaille message : "+message.length()+"\nTaille de la clef : "+clef.length()+"\n");
//Cryptage du message :
while(compteur<message.length())
{
//Réorganisation de vegenereDeux pour obtenir la ligne utile au cryptage :
for(int i=0; i<26; i++)
if(clef.charAt(compteur)==vigenereUn[i])
{
vigenereDeux[0]=vigenereUn[i];
int j=0;
for(int k=1; k<26; k++)
{
vigenereDeux[k]=(char)(vigenereDeux[0]+k);
if(vigenereDeux[k]>'z')
{
vigenereDeux[k]=vigenereUn[0+j];
j++;
}
}
j=vigenereUn.length;
}
//application du principe de vegenere :
for (int i=0; i<26; i++)
if(message.charAt(compteur)==vigenereUn[i])
{
messageCrypte+=vigenereDeux[i];
i=vigenereUn.length;
}
compteur++;
// //Test de VigenereDeux :
// System.out.print("VigenereDeux num "+compteur+" :\n"); for(int i=0; i<26; i++){System.out.print(vigenereDeux[i]);} System.out.print("\n\n");
}
// //Test de VigenereUn :
// System.out.print("VigenereUn :\n"); for(int i=0; i<26; i++){System.out.print(vigenereUn[i]);} System.out.print("\n\n");
return messageCrypte;
}
} |
Partager