20250728 1.2.2
[-] Удалён интерфейс IStoredAtSQL (перемещён в пакет php_db_components_pack. [+] Добавлен класс шифрования Encryptor.
This commit is contained in:
parent
d217322a35
commit
f3db4e8041
@ -17,7 +17,8 @@
|
|||||||
],
|
],
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^8.4",
|
"php": "^8.4",
|
||||||
"ext-mbstring": "*"
|
"ext-mbstring": "*",
|
||||||
|
"ext-openssl": "*"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"phpunit/phpunit": "^12.2.7"
|
"phpunit/phpunit": "^12.2.7"
|
||||||
|
60
sources/classes/Encryptor.php
Normal file
60
sources/classes/Encryptor.php
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace goodboyalex\php_components_pack\classes;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Класс криптографической защиты.
|
||||||
|
*
|
||||||
|
* @author Александр Бабаев
|
||||||
|
* @package php_components_pack
|
||||||
|
* @version 1.0
|
||||||
|
* @since 1.2.2
|
||||||
|
*/
|
||||||
|
final class Encryptor
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Шифрует данные.
|
||||||
|
*
|
||||||
|
* @param string $string Данные для шифрования.
|
||||||
|
* @param string $key Ключ шифрования.
|
||||||
|
*
|
||||||
|
* @return string|false Шифрованные данные или false в случае ошибки.
|
||||||
|
*/
|
||||||
|
public static function Encrypt (string $string, string $key): string|false
|
||||||
|
{
|
||||||
|
// Метод шифрования
|
||||||
|
$cipher = 'aes-256-cbc';
|
||||||
|
|
||||||
|
// Длинна ненулевого вектора инициализации
|
||||||
|
$ivLen = openssl_cipher_iv_length($cipher);
|
||||||
|
|
||||||
|
// Ненулевой вектор инициализации
|
||||||
|
$iv = openssl_random_pseudo_bytes($ivLen);
|
||||||
|
|
||||||
|
// Шифрую и вывожу
|
||||||
|
return openssl_encrypt($string, $cipher, $key, iv: $iv) . ":" . base64_encode($iv);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Дешифрует данные.
|
||||||
|
*
|
||||||
|
* @param string $string Данные для дешифрования.
|
||||||
|
* @param string $key Ключ шифрования.
|
||||||
|
*
|
||||||
|
* @return string|false Дешифрованные данные или false в случае ошибки.
|
||||||
|
*/
|
||||||
|
public static function Decrypt (string $string, string $key): false|string
|
||||||
|
{
|
||||||
|
// Метод шифрования
|
||||||
|
$cipher = 'aes-256-cbc';
|
||||||
|
|
||||||
|
// Разделённый массив с шифрованными данными и вектором инициализации
|
||||||
|
$cryptArray = explode(':', $string);
|
||||||
|
|
||||||
|
// Ненулевой вектор инициализации
|
||||||
|
$iv = base64_decode($cryptArray[1]);
|
||||||
|
|
||||||
|
// Дешифрую и вывожу
|
||||||
|
return openssl_decrypt($cryptArray[0], $cipher, $key, iv: $iv);
|
||||||
|
}
|
||||||
|
}
|
@ -1,32 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace goodboyalex\php_components_pack\interfaces;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Интерфейс поддержки моделей и классов, реализующих хранение свойств в SQL базе данных.
|
|
||||||
*
|
|
||||||
* @author Александр Бабаев
|
|
||||||
* @package freecms
|
|
||||||
* @version 0.1
|
|
||||||
* @since 0.1
|
|
||||||
*/
|
|
||||||
interface IStoredAtSQL
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Вывод параметров добавления/обновления данных в базу данных.
|
|
||||||
*
|
|
||||||
* @param bool $withId Нужно ли добавлять Id в массив
|
|
||||||
*
|
|
||||||
* @return array Массив параметров
|
|
||||||
*/
|
|
||||||
public function ToSQL (bool $withId = true): array;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Преобразование данных из базы данных в модель, класс.
|
|
||||||
*
|
|
||||||
* @param array $sqlData Данные из базы данных
|
|
||||||
*
|
|
||||||
* @return self Класс модели с заполненными данными из базы данных
|
|
||||||
*/
|
|
||||||
public function FromSQL (array $sqlData): self;
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user