-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMain.java
More file actions
90 lines (75 loc) · 3.14 KB
/
Copy pathMain.java
File metadata and controls
90 lines (75 loc) · 3.14 KB
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
import java.util.Scanner;
public class Main {
static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
System.out.println("Que voulez-vous faire : \n1. Chiffrer\n2. Déchiffrer");
int choix = scanner.nextInt();//lecture input utilisateur
scanner.nextLine();
if (choix == 1) {
System.out.println("Message chiffré : " + chiffrement());
} else if (choix == 2) {
System.out.println("Message déchiffré : " + dechiffrement());
} else {
System.out.println("Entrez une valeur entre 1 et 2 !");
}
}
/**
* Méthode permettant de chiffrer un message selon le chiffre de César.
* @return le message chiffré
*/
public static String chiffrement() {
System.out.print("Entrez le message à chiffrer : ");
String message = scanner.nextLine();
System.out.print("Entrez la clé : ");
int clé = scanner.nextInt();
scanner.nextLine();
String messageChiffre = "";
for (int i = 0; i < message.length(); i++) {
int valeurASCII = message.charAt(i); //Conversion de caractère en sa valeur en ASCII
char nouvelleValeur;
if (lettre(valeurASCII)) {
if (majuscule(valeurASCII)) {
// Cas des majuscules : 'A' → 'Z' (codes ASCII 65–90)
nouvelleValeur = (char) ('A' + (valeurASCII + clé - 'A') % 26);
} else {
// Cas des minuscules : 'a' → 'z' (codes ASCII 97–122)
nouvelleValeur = (char) ('a' + (valeurASCII + clé - 'a') % 26);
}
} else {
// Si ce n’est pas une lettre (espace, chiffre, ponctuation...), on ne modifie pas le caractère
nouvelleValeur = (char) valeurASCII;
}
messageChiffre += nouvelleValeur;
}
return messageChiffre;
}
public static String dechiffrement() {
System.out.print("Entrez le message à déchiffrer : ");
String message = scanner.nextLine();
System.out.print("Entrez la clé : ");
int clé = scanner.nextInt();
scanner.nextLine();
String messageDechiffre = "";
for (int i = 0; i < message.length(); i++) {
int valeurASCII = message.charAt(i);
char nouvelleValeur;
if (lettre(valeurASCII)) {
if (majuscule(valeurASCII)) {
nouvelleValeur = (char) ('A' + (valeurASCII - clé - 'A' + 26) % 26);
} else {
nouvelleValeur = (char) ('a' + (valeurASCII - clé - 'a' + 26) % 26);
}
} else {
nouvelleValeur = (char) valeurASCII;
}
messageDechiffre += nouvelleValeur;
}
return messageDechiffre;
}
public static boolean lettre(int valeurASCII) {
return (valeurASCII >= 65 && valeurASCII <= 90) || (valeurASCII >= 97 && valeurASCII <= 122);
}
public static boolean majuscule(int valeurASCII) {
return valeurASCII >= 65 && valeurASCII <= 90;
}
}