Bonjour, je n'arrive pas à comprendre le fonctionnement du cryptage decryptage.
Voici mon code.
ECRITURE
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
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 String sql2 = "INSERT INTO membre (idmembre,email,pseudo,token,password,role, verification) VALUES (NULL, ?, ?, ?, ?, 'visiteur', '0')"; PreparedStatement statement2 = conn.prepareStatement(sql2); statement2.setString(1, request.getParameter("email")); statement2.setString(2, request.getParameter("pseudo")); int Max = 1000000; int Min = 0; Integer nbaleatoire = Min + (int)(Math.random() * ((Max - Min) + 1)); String token = nbaleatoire.toString(); statement2.setString(3, token); String motpasse= request.getParameter("password"); String motpasse2= request.getParameter("password2"); if (!motpasse.equals(motpasse2)) {System.out.println("erreur"); response.sendRedirect("enregistrement.jsp?erreure=3"); } else { /* * Cryptage * */ TestCipherDESede Cryptage = new TestCipherDESede(); final String message = motpasse; KeyGenerator keyGen; keyGen = KeyGenerator.getInstance("DESede"); keyGen.init(168); SecretKey cle = keyGen.generateKey(); System.out.println("cle : " + new String(cle.getEncoded())); byte[] enc = Cryptage.encrypter(message, cle); System.out.println("texte encrypte : " + new String(enc)); /* * fin cryptage */ motpasse = new String(enc); statement2.setString(4, motpasse); int rowsInserted = statement2.executeUpdate(); if (rowsInserted > 0) { System.out.println("A new user was inserted successfully!"); response.sendRedirect("index.jsp?erreure=2#formulaire"); } else { System.out.println("erreur"); response.sendRedirect("enregistrement.jsp?erreure=3"); } } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }
LECTURE
Le cryptogramme
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
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 String sql = "SELECT email, idmembre, token, password , pseudo FROM membre WHERE email = ?"; PreparedStatement statement = conn.prepareStatement(sql); statement.setString(1, request.getParameter("email")); System.out.println("requette email" + request.getParameter("email")); ResultSet rowsselected = statement.executeQuery(); statement.getResultSet(); while (rowsselected.next()) { System.out.println("REQUETTE select EFFECTUE"); String email = rowsselected.getString("email"); String motpasse = rowsselected.getString("password"); String passwordCrypte = rowsselected.getString("password"); /* * debut cryptage */ TestCipherDESede Cryptage = new TestCipherDESede(); String message = passwordCrypte; KeyGenerator keyGen; try { keyGen = KeyGenerator.getInstance("DESede"); keyGen.init(168); SecretKey cle = keyGen.generateKey(); System.out.println("cle : " + new String(cle.getEncoded())); byte[] enc = TestCipherDESede.encrypter(message, cle); System.out.println("texte encrypte : " + new String(enc)); String dec = TestCipherDESede.decrypter(enc, cle); System.out.println("texte decrypte : " + dec); message = dec; } catch (Exception e) { e.printStackTrace(); } /* * fin cryptage */ if (motpasse.equals(message)) { response.sendRedirect("index.jsp"); } } System.out.println("erreur"); response.sendRedirect("index2.jsp?erreure=1"); } catch (Exception ex) { ex.printStackTrace(); } } }
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import javax.crypto.BadPaddingException; import javax.crypto.Cipher; import javax.crypto.IllegalBlockSizeException; import javax.crypto.KeyGenerator; import javax.crypto.NoSuchPaddingException; import javax.crypto.SecretKey; public class TestCipherDESede { public static void main(String[] args) { final String message = "Mon message a traiter"; KeyGenerator keyGen; try { keyGen = KeyGenerator.getInstance("DESede"); keyGen.init(168); SecretKey cle = keyGen.generateKey(); System.out.println("cle : " + new String(cle.getEncoded())); byte[] enc = encrypter(message, cle); System.out.println("texte encrypte : " + new String(enc)); String dec = decrypter(enc, cle); System.out.println("texte decrypte : " + dec); } catch (Exception e) { e.printStackTrace(); } } public static byte[] encrypter(final String message, SecretKey cle) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException { Cipher cipher = Cipher.getInstance("DESede"); cipher.init(Cipher.ENCRYPT_MODE, cle); byte[] donnees = message.getBytes(); return cipher.doFinal(donnees); } public static String decrypter(final byte[] donnees, SecretKey cle) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException { Cipher cipher = Cipher.getInstance("DESede"); cipher.init(Cipher.DECRYPT_MODE, cle); return new String(cipher.doFinal(donnees)); } }
Partager