Featured
Cryptage de Vigénère en JAVA
Cryptage / Décryptage de Vigénère en JAVA
Exemple de cryptage/decryptage d'un message en texte grace a l'gorithme de Vigenere.
Sauvegarder le fichier suivant dans ListeChar.java
public class ListeChar{
public char liste[];
public char get(int x){
return this.liste[x];
}
public void set(int x, char val){
this.liste[x] = val;
}
public ListeChar(int taille){
this.liste = new char[taille];
for(int i=0;i<taille;i++)
{
this.liste[i]='A';
}
}
}
Sauvegarder le fichier suivant dans Grille.java
public class Grille{
public ListeChar grille[];
public char get(int x,int y){
return this.grille[x].get(y);
}
public void set(int x,int y,char val){
this.grille[x].set(y,val);
}
public Grille(int x, int y){
this.grille = new ListeChar[x];
for(int i=0;i<this.grille.length;i++)
{
this.grille[i] = new ListeChar(y);
}
}
}
Sauvegarder le fichier suivant dans CodDec_Vigenere.java
public class CodDec_Vigenere{
private static boolean debug=false;
private static int MAX = 26;
private static int MAX_Lettres = 1000;
Grille grille = new Grille(MAX,MAX);
public char get(int x,int y){
return grille.get(x,y);
}
public char CodeLettre(char x,char y){
if(debug)
{
System.out.println("x = "+x+" y = "+y);
System.out.println("At "+(int)(x-65)+" x "+(int)(y-65));
}
if((x==' ') &&(y==' '))
return ' ';
else
return grille.get((int)(x-65),(int)(y-65));
}
public String Code(String message,String clef){
char temp[] = new char[message.length()];
message = message.toUpperCase();
clef = clef.toUpperCase();
String key = Arrange_Clef(message.toUpperCase(),clef.toUpperCase());
if(debug)
{
System.out.println(key);
System.out.println(message);
}
for(int i=0;i<message.length();i++)
{
try
{
temp[i]=CodeLettre(message.charAt(i),key.charAt(i));
}
catch(ArrayIndexOutOfBoundsException e)
{
temp[i]=message.charAt(i);
if(debug)
System.out.println(message.charAt(i)+" or "+key.charAt(i)+" isn't A-Z letter");
}
}
return String.valueOf(temp);
}
public char DecodeLettre(char x,char y){
int i=-1;
if((x==' ') &&(y==' '))
return ' ';
else
{
do
{
i++;
}while(grille.get(i,(int)(y-65))!=x);
return grille.get(i,0);
}
}
public String Decode(String message,String clef){
char temp[] = new char[message.length()];
message = message.toUpperCase();
clef = clef.toUpperCase();
String key = Arrange_Clef(message.toUpperCase(),clef.toUpperCase());
for(int i=0;i<message.length();i++)
{
try
{
temp[i]=DecodeLettre(message.charAt(i),key.charAt(i));
}
catch(ArrayIndexOutOfBoundsException e)
{
temp[i]=message.charAt(i);
if(debug)
System.out.println(message.charAt(i)+" or "+key.charAt(i)+" isn't A-Z letter");
}
}
return String.valueOf(temp);
}
public void Build_Grille(){
for(int i=0;i<MAX;i++)
{
for(int j=0;j<MAX;j++)
{
grille.set(i,j,(char)(65+(i+j)%MAX));
}
}
}
public String Arrange_Clef(String mess,String clef){
String t="";
int j=0;
for(int i=0;i<mess.length();i++)
{
if(mess.charAt(i)==' ')
{
t=t+" ";
}
else
{
t=t+String.valueOf(clef.charAt(j));
j=(j+1)%clef.length();
}
}
return t;
}
public CodDec_Vigenere(){
Build_Grille();
}
}
Enfin, sauvegarder le fichier suivant dans Vigenere.java
import java.awt.*;
import java.applet.*;
import java.lang.*;
public class Vigenere extends Applet{
TextField tMess;
TextField tClef;
TextField tCrypt;
Label lMess;
Label lClef;
Label lCrypt;
Button bOK = new Button("Crypter");
Button bUnOK = new Button("Decrypter");
CodDec_Vigenere Crypt = new CodDec_Vigenere();
public void init(){
lMess = new Label("Message a coder : ");
tMess = new TextField(50);
lClef = new Label("Clef pour crypter votre texte : ");
tClef = new TextField(50);
lCrypt = new Label("Message code : ");
tCrypt = new TextField(50);
setBackground(Color.white);
add(lMess);
add(tMess);
add(lClef);
add(tClef);
add(bOK);
add(lCrypt);
add(tCrypt);
add(bUnOK);
}
public void paint(Graphics g){
}
public boolean action(Event e,Object arg){
if(e.target instanceof Button){
if (e.target == bOK)
{
tCrypt.setText(Crypt.Code(tMess.getText(),tClef.getText()));
}
if (e.target == bUnOK)
{
tCrypt.setText(Crypt.Decode(tCrypt.getText(),tClef.getText()));
}
else
return false;
}
return true;
}
}
Tout compiler avec :
javac -deprecation ListeChar.java
javac -deprecation Grille.java
javac -deprecation CodDec_Vigenere.java
javac -deprecation Vigenere.java
Enfin créer une page html pour l’exploiter :
<html>
<body>
<center><b>Nombre premiers inferieurs a n a partir du Crible !<br></b></center><br><br>
<center><applet code="Vigenere.class" width=420 height=400 alt="Crible">
Crible</applet></center>
</body>
</html>
Bonus une classe pour le tester en Java :
public class test{
public static void main (String[] args){
CodDec_Vigenere o = new CodDec_Vigenere();
String c = new String("Bonjour ceci est un test !");
String clef = new String("Jean-Michel");
String d = o.Code(c,clef);
String e = o.Decode(d,clef);
System.out.println("Avant = "+c);
System.out.println("Apres = "+d);
System.out.println("Avant = "+e);
}
}
View Comments...