Chiffrement de affine et vigenere

Fermé
lacloche93 Messages postés 2 Date d'inscription mercredi 12 novembre 2014 Statut Membre Dernière intervention 21 novembre 2014 - 16 nov. 2014 à 21:45
Bonjour,j'ai écrit un programme JAVA qui permet de chiffrer et déchiffrer des textes sur l'alphabet
latin de 26 lettres de A à Z pour les systèmes
cryptographiques suivants :
1- Chiffre de César.
2- Chiffre affine.
3- Chiffre de Vigenère.
j'ai réussi de programmer le chiffrement et le déchiffrement de césar mais affine et Vigenère j'arrive plus a cause d'une plus petite erreur j'ai pas pu la corriger voici mon code:
i


import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTextField;

import java.awt.TextArea;

import javax.swing.ButtonGroup;
import javax.swing.JTextPane;
import javax.swing.JButton;
import javax.swing.JRadioButton;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JComboBox;
import javax.swing.DefaultComboBoxModel;


public class securité extends JFrame {

private JPanel contentPane;
private JTextField textField;
private JTextField textField_1;
private JRadioButton Cesar;
private JRadioButton affine;
private JRadioButton Hill;
private JRadioButton Vigenere;

/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
securité frame = new securité();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

/**
* Create the frame.
*/
public securité() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);

final JTextPane absolue = new JTextPane();
absolue.setBounds(10, 31, 211, 43);
contentPane.add(absolue);

textField = new JTextField();
textField.setBounds(10, 100, 211, 43);
contentPane.add(textField);
textField.setColumns(10);

JButton btnNewButton = new JButton("chiffrer");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
}
});
btnNewButton.setBounds(50, 76, 89, 23);
contentPane.add(btnNewButton);

JButton btnNewButton_1 = new JButton("dechiffrer");
btnNewButton_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
String N =textField.getText();
String j="";
int[]t= new int [N.length()];
for(int i=0;i<t.length;i++){
t[i]=((int)N.charAt(i)+23)-97;
t[i]=t[i]%26;
t[i]=t[i]+97;
char c=(char) t[i];
j=j+c;

} textField_1.setText(j);

}public void actionPerformed1(ActionEvent arg0) {
int a1,b1,n = 0;
a1=Integer.parseInt(a.getText());
b1=Integer.parseInt(b.getText());
String g="";
String S=textField.getText();
int[] t=new int [S.length()];
for (int i=1;i<26;i++)
{
if ((a1*i)%26==1)

{n=i;
i=26;
}
}

for(int i=0;i<t.length;i++){
char L=S.charAt(i);
t[i]=(int) L;
t[i]-=97;

t[i]=n*(t[i]+26-b1)%26;

t[i]=t[i]%26;
t[i]=t[i]+97;
char o=(char) t[i];
g=g+o;

}
textField_1.setText(g);
}
//........................dechiffrement de vigener.................
public void actionPerformed2(ActionEvent arg0) {
//Creation des variables :
String message;
String clef;
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];



if(clef.length()< message.length())
for(int i=clef.length(); i<message.length(); i++)
clef-=clef.charAt(i%clef.length());
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++;

}
textField.setText();


}

});


btnNewButton_1.setBounds(50, 154, 89, 23);
contentPane.add(btnNewButton_1);




JLabel lblTexteOriginal = new JLabel("Texte original");
lblTexteOriginal.setBounds(10, 11, 113, 14);
contentPane.add(lblTexteOriginal);

textField_1 = new JTextField();
textField_1.setBounds(10, 188, 211, 49);
contentPane.add(textField_1);
textField_1.setColumns(10);

JComboBox comboBox = new JComboBox();
comboBox.setModel(new DefaultComboBoxModel(new String[] {"1", "3", "5", "7", "9", "15", "17", "19", "21", "23", "25"}));
comboBox.setBounds(290, 212, 38, 20);
contentPane.add(comboBox);

JComboBox comboBox_1 = new JComboBox();
comboBox_1.setModel(new DefaultComboBoxModel(new String[] {"1", "3", "5", "7", "9", "15", "17", "21", "23", "25"}));
comboBox_1.setBounds(369, 212, 38, 20);
contentPane.add(comboBox_1);

JLabel lblA = new JLabel("a");
lblA.setBounds(258, 215, 21, 14);
contentPane.add(lblA);

JLabel lblB = new JLabel("b");
lblB.setBounds(338, 215, 21, 14);
contentPane.add(lblB);
// les botton

ButtonGroup groupe=new ButtonGroup();
Container contenu =getContentPane();
Cesar =new JRadioButton("Cesar") ;
Cesar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {

String s=absolue.getText();
String m="";
int[]t=new int [s.length()];
for (int i=0;i<t.length;i++){
t[i]=((int)s.charAt(i)+3)-97;
t[i]=t[i]%26;
t[i]=t[i]+97;
char c =(char) t[i];
m=m+c;
}
textField.setText(m);
}
});
//........................
Cesar.setBounds(238, 75, 66, 23);
groupe.add(Cesar) ;
contenu.add(Cesar) ;
//...............................CHiffrement Affine..................
ButtonGroup groupe1=new ButtonGroup();
Container contenu1 =getContentPane();
affine =new JRadioButton("Affine") ;
affine.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
String s=absolue.getText();
int a1,b1;
String m="";
a1=Integer.parseInt(a.getcomboBox());
b1=Integer.parseInt(b.getcomboBox());
int[]t=new int [s.length()];
for (int i=0;i<t.length;i++){
t[i]=(((int)s.charAt(i)* a1)+b1)-97;
t[i]=t[i]%26;
t[i]=t[i]+97;
char c =(char) t[i];
m=m+c;
}
textField.setText(m);


}
});
affine.setBounds(306, 75, 79, 23);
groupe1.add(affine) ;
contenu1.add(affine) ;
//..................................chiffrement vigenere.......................
Vigenere =new JRadioButton("Vigenère") ;
Vigenere.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {

{
//Creation des variables :
String message;
String clef;
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];



if(clef.length()< message.length())
for(int i=clef.length(); i<message.length(); i++)
clef+=clef.charAt(i%clef.length());
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++;

}
textField.setText();
}

}
}

);
Vigenere.setBounds(306, 108, 79, 23);
groupe1.add(Vigenere) ;
contenu1.add(Vigenere) ;
//...................................
Hill=new JRadioButton("Hill");
Hill.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {

}
});
Hill.setBounds(238, 108, 55, 23);
groupe1.add(Hill);
contenu1.add(Hill);
//.............................
}
}

Mercii d'avance je souhaite que vous pouvez m'aidez car je suis débutante en java éclipse et surtout dans l'implémentation dans les interfaces graphiques