Encrypt::getParams()   A
last analyzed

Complexity

Conditions 4
Paths 3

Size

Total Lines 18
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 18
rs 9.2
cc 4
eloc 11
nc 3
nop 1
1
<?php
2
	namespace core\auth;
3
4
	use core\App;
5
	use core\functions\ChaineCaractere;
6
7
	class Encrypt {
8
		private static $params;
9
		
10
		
11
		//-------------------------- CONSTRUCTEUR ----------------------------------------------------------------------------//
12
		//-------------------------- FIN CONSTRUCTEUR ----------------------------------------------------------------------------//
13
		
14
		
15
		//-------------------------- GETTER ----------------------------------------------------------------------------//
16
		/**
17
		 * @param null $id_identite
18
		 * @return string
19
		 */
20
		public static function getParams($id_identite = null) {
21
			if ($id_identite != null) {
22
				$dbc = App::getDb();
23
				$params = "";
24
25
				$query = $dbc->select("mdp_params")->from("identite")->where("ID_identite", "=", $id_identite)->get();
26
				if (count($query) > 0) {
27
					foreach ($query as $obj) {
28
						$params = $obj->mdp_params;
29
					}
30
				}
31
			}
32
			else {
33
				$params = self::$params;
34
			}
35
36
			return $params;
37
		}
38
		//-------------------------- FIN GETTER ----------------------------------------------------------------------------//
39
		
40
		
41
		//-------------------------- SETTER ----------------------------------------------------------------------------//
42
		/**
43
		 * fonction qui permet d'encrypter un mot de passe, une fois encrype, on save les params pour le retrouver en bdd
44
		 * @param string|null $mdp
45
		 * @param $id_identite
46
		 * @return string
47
		 */
48
		public static function setEncryptMdp($mdp, $id_identite = null) {
49
			$encrypt_str = ChaineCaractere::random(154);
50
51
			//on cache le mdp
52
			$mdp = md5($mdp);
53
54
			//récupération de la logneur du mot de passe
55
			$longeur_mdp = strlen($mdp);
56
57
			//on va couper le mot de passe en 2 suivant un nombre aleatoire
58
			$nb_aleatoire_mdp = rand(3, $longeur_mdp-2);
59
			$bout1_mdp = mb_substr($mdp, 0, $longeur_mdp/2, "UTF-8");
60
			$bout2_mdp = mb_substr($mdp, $longeur_mdp/2, $longeur_mdp, "UTF-8");
61
62
			//on stock la taille des bouts pour pouvoir les décrypter
63
			$taille_bout1 = strlen($bout1_mdp);
64
			$taille_bout2 = strlen($bout2_mdp);
65
66
			//on insere le premier bout aleatoirement dans le hashmdp
67
			//on calcul sa longeur total (celle duhash + la logneur du mdp que l'on va rajouter dedans)
68
			$longueur_hash = strlen($encrypt_str);
69
			$debut_bout1 = rand(0, $longueur_hash/2);
70
71
			//on rajouter le premier bout dans le mot de passe + recalcule de la longeur du hash avec le mdp add
72
			$encrypt_str = mb_substr($encrypt_str, 0, $debut_bout1).$bout1_mdp.mb_substr($encrypt_str, $debut_bout1, $longueur_hash);
73
74
			//on insere le second bout aleatoirement dans le hashmdp
75
			//on calcul sa longeur total (celle duhash + la logneur premier bout du mdp que l'on va rajouter dedans)
76
			$longueur_hash = strlen($encrypt_str);
77
			$debut_bout2 = rand($longueur_hash/2, $longueur_hash);
78
79
			//on rajoute le deuxieme
80
			$mdp_encrypt = mb_substr($encrypt_str, 0, $debut_bout2).$bout2_mdp.mb_substr($encrypt_str, $debut_bout2, $longueur_hash);
81
82
			if ($id_identite != null) {
83
				self::setSaveParams("$taille_bout1, $debut_bout2, $nb_aleatoire_mdp, $taille_bout2, $debut_bout1, ".ChaineCaractere::random(20), $id_identite);
84
			}
85
			else {
86
				self::$params = "$taille_bout1, $debut_bout2, $nb_aleatoire_mdp, $taille_bout2, $debut_bout1, ".ChaineCaractere::random(20);
87
			}
88
89
			return $mdp_encrypt;
90
		}
91
92
		/**
93
		 * fonction qui permet de décrypter un mdp
94
		 * @param $mdp
95
		 * @param $id_identite
96
		 * @return string
97
		 */
98
		public static function setDecryptMdp($mdp, $id_identite) {
99
			//récupérations des parametres pour la décryption
100
			self::$params = explode(", ", self::getParams($id_identite));
101
102
			//récupération du premier bout en fonction du tableau
103
			$bout1_mdp = mb_substr($mdp, self::$params[4], self::$params[0]);
104
			$bout2_mdp = mb_substr($mdp, self::$params[1], self::$params[3]);
105
106
			return $bout1_mdp.$bout2_mdp;
107
		}
108
109
		/**
110
		 * sauvegarde les parametres pour retrouver le mot de passe dans la bdd
111
		 * @param string $params
112
		 * @param $id_identite
113
		 */
114
		public static function setSaveParams($params, $id_identite) {
115
			$dbc = App::getDb();
116
117
			$dbc->update("mdp_params", $params)->from("identite")->where("ID_identite", "=", $id_identite)->set();
118
		}
119
		//-------------------------- FIN SETTER ----------------------------------------------------------------------------//
120
	}