Crypt.php
См. документацию.
1 <?php
2 
3 /**
4  * @file
5  * @brief шифрование и расшифровка идентификатора пользователя
6  *
7  * шифрование используется для авторизации по $_COOKIE['UID] и $_COOKIE['FROM_UID], для создания уникального ключа шифрования используется пароль базы данных, имя базы данных и имя хоста.
8  */
9 
10 
11 namespace Wrong\Auth;
12 
13 use Wrong\Start\Env;
14 
15 /**
16  * @brief Crypt отвечает за шифрование и расшифровку идентификатора пользователя
17  *
18  */
19 class Crypt
20 {
21  /**
22  * шифрует идентификатор.
23  *
24  * @param int $id Идентификатор для шифрования
25  *
26  * @return string $ciphertext Строка символов, представляющая собой зашифрованную версию идентификатора.
27  */
28  public static function idEncrypt($id)
29  {
30  $ivlen = openssl_cipher_iv_length($cipher = "AES-128-CBC");
31  $iv = openssl_random_pseudo_bytes($ivlen);
32  $ciphertext_raw = openssl_encrypt($id, $cipher, Env::$e->SYSTEM_SECRET_KEY, $options = OPENSSL_RAW_DATA, $iv);
33  $hmac = hash_hmac('sha256', $ciphertext_raw, Env::$e->SYSTEM_SECRET_KEY, $as_binary = true);
34  $ciphertext = base64_encode($iv . $hmac . $ciphertext_raw);
35  return $ciphertext;
36  }
37 
38  /**
39  * расшифровывает идентификатор.
40  *
41  * @param string $hash Зашифрованная строка
42  *
43  * @return int $id Идентификатор пользователя.
44  */
45  public static function idDecrypt($hash)
46  {
47  $c = base64_decode($hash);
48  $ivlen = openssl_cipher_iv_length($cipher = "AES-128-CBC");
49  $iv = substr($c, 0, $ivlen);
50  $hmac = substr($c, $ivlen, $sha2len = 32);
51  $ciphertext_raw = substr($c, $ivlen + $sha2len);
52  $plaintext = openssl_decrypt($ciphertext_raw, $cipher, Env::$e->SYSTEM_SECRET_KEY, $options = OPENSSL_RAW_DATA, $iv);
53  $calcmac = hash_hmac('sha256', $ciphertext_raw, Env::$e->SYSTEM_SECRET_KEY, $as_binary = true);
54  if (hash_equals($hmac, $calcmac)) {
55  return intval($plaintext);
56  }
57  return 0;
58  }
59 }
Crypt отвечает за шифрование и расшифровку идентификатора пользователя
Definition: Crypt.php:20
static idDecrypt($hash)
Definition: Crypt.php:45
static idEncrypt($id)
Definition: Crypt.php:28
Env класс управляющий, добавляющий или записывающий переменные среды
Definition: Env.php:17
static $e
Definition: Env.php:22