/
hellman.php
141 lines (116 loc) · 4.17 KB
/
hellman.php
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
<?php
include_once __DIR__."/bootstrap/crypt.php";
include_once __DIR__."/bootstrap/decrypt.php";
include_once __DIR__."/bootstrap/keyCrypt.php";
// convert le CLI en array
function stringToArray($string) {
$count_string = strlen($string);
$tmp_string = null;
$actual_string = null;
$new_array = array();
for($i = 0; $i < $count_string; $i++) {
$tmp_string = $string[$i];
if(!is_numeric($tmp_string)) {
array_push($new_array, $actual_string);
$actual_string = null;
}
else {
$actual_string .= $string[$i];
}
}
return $new_array;
}
function hellman($a) {
echo shell_exec('clear');
echo "
Bonjour, mon nom est Bernard, je suis la pour crypter votre message.\n
Vous etes Alice, et votre but est de m'envoyer une clé publique pour que je puisse chiffrer mon message ...\n
D'abord, vous devez créer une clé privée, celle ci doit etre une suite super-croissante :\n
Alice : ";
while(true) {
// bernard : votre private key
$pKey = readline($a);
$private_key = stringToArray($pKey);
if(!super_croissance_check($private_key)) {
echo "
Veuillez entrer une suite super croissante\n";
$pKey = readline($a);
$private_key = stringToArray($pKey);
if(!super_croissance_check($private_key)) {
echo "
Vas t'acheter des doigts !\n";
exit;
}
}
// sleep(1);
echo "
Hum... c'est bien une suite supercroissante.\n";
// bernard : votre mod
echo "
Maintenant, un modulo :\n
Alice : ";
$mod = readline($a);
if(!is_numeric($mod)) {
echo "\n
Je n'ai pas compris, 'ai besoin d'un entier pour pouvoir continuer.\n
Alice : \n";
$mod = readline($a);
if(!is_numeric($mod)) {
echo "
Je n'ai toujours pas compris, pour eviter l'explosion de la terre je m'arette la.\n";
exit;
}
}
// bernard : votre $e
echo "
Bien ! Maintenant un entier e.\n
Alice : ";
$e = readline($a);
if(!is_numeric($e)) {
echo "\n
Je n'ai pas compris, 'ai besoin d'un entier pour pouvoir continuer\n
Alice : ";
$e = readline($a);
if(!is_numeric($e)) {
echo "
Je n'ai toujours pas compris, je ... je dois vous laisser, j'ai oublié, une fourchette dans le micro-ondes\n";
exit;
}
}
// /echo "E :: $e ::";
// limit > 4
echo "
Et pour finir un entier bloc pour limiter les bloc messages dont la longueur doit etre supérieur à 4 et que la longueur de cl2 privée ne depasse pas celle ci\n
Alice : ";
$limit = readline($a);
if($limit <= 4 || $limit > count($private_key)) {
echo "\n
Hum pouvez vous recommencer ? la limite ne correspond pas au regles decrites tout à l'heure\n
Alice : ";
$limit = readline($a);
if(!$limit <= 4 || $limit > count($private_key)) {
echo "
Hum, pouvez vous vous acheter des doigts ?\n";
exit;
}
}
echo "\n";
sleep(2);
$public_key = getPublicKey($private_key, $mod, $e, $limit);
// bernard votre message
echo "\n
Tout est bon ! il ne reste plus que le message a crypter.\n
Bernard : ";
$mess = readline($a);
echo "\n";
sleep(2);
$message_crypted = cryptMessage($public_key[0], $mess, $limit);
// $message_crypted = cryptMessage($public_key[0], $mess, $limit);
$passwd = $public_key[1];
// decrypt($private_key, $e, $mod, $message_crypted, $passwd, $limit);
decrypt($private_key, $e, $mod, $message_crypted, $passwd, $limit);
exit;
}
echo "\n";
}
hellman($argv[1]);