Bonjour les amis,

Étant sur notre projet de synthèse, nous sommes bloqués sur la première partie de celui-ci.

Pour commencer, notre but était de construire un client/serveur.
On considère que le serveur possède une paire de clé RSA et que le client possède la clé publique du serveur.

Notre but dans une première étape était de :
- créer un objet « login_mdp» en java qui contient deux String (login, mdp)coté client.
- de crypter cet objet « login_mdp» avec la clé publique du serveur coté client
- d’envoyer cet objet crypté du client au serveur
- de décrypter d’objet coté serveur pour récupérer les deux String.

Nous avons du mal à crypter et décrypter l’objet.
Pouvez-vous nous aider à crypter et décrypter un objet.

Merci de votre aide,

Ci-dessous notre code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
//L'objet
public class Login_MDP {
 
    String login = "Toto";
    String mdp = "Toto";
 
    public Login_MDP(String s1, String s2){
        this.login = s1;
        this.mdp = s2;
    }
 
    public String getlogin() {
        return login;
    }
 
    public String getmdp() {
        return mdp;
    }
 
}
Le main:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
public class Client {
    public static void main(String[] args) throws NoSuchAlgorithmException, Exception {
        KeyPair kp = generateRSAKeyPair(); //Création de la paire de clé, on considere que c'est la pair de clé du serveur.
        Login_MDP lm = new Login_MDP("Patate","Bouch"); //Notre objet
 
        /*
        Crypter notre objet lm avce la clé publique de kp (kp.getPublic())
        */
 
        /*
        Décrypter l'objet avec la clé privée de kp (kp.getPrivate())
        */
    }
 
    //Générateur de paire de clé RSA
    public static KeyPair generateRSAKeyPair() throws Exception {
        KeyPairGenerator kpGen = KeyPairGenerator.getInstance("RSA");
        kpGen.initialize(512, new SecureRandom());
        return kpGen.generateKeyPair();
    }
 
    //fonction qui chiffrer une donnée avec une clé privée
    public static byte[] encrypt(PublicKey key, byte[] data) throws IllegalBlockSizeException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, BadPaddingException {
        Cipher cipher = Cipher.getInstance("RSA"); 
        cipher.init(Cipher.ENCRYPT_MODE, key);
        byte[] text = cipher.doFinal(data);
        return text;
    }
 
    //fonction qui déchiffre une donnée avec une clé privée
    public static byte[] decrypt(PrivateKey key, byte[] data) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException {
        Cipher cipher = Cipher.getInstance("RSA");
        cipher.init(Cipher.DECRYPT_MODE, key);
        byte[] text = cipher.doFinal(data);
        return text;
    }
}