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:
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 //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; } }
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; } }
Partager