[-] Удалён интерфейс IStoredAtSQL (перемещён в пакет php_db_components_pack. [+] Добавлен класс шифрования Encryptor.
60 lines
2.0 KiB
PHP
60 lines
2.0 KiB
PHP
<?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);
|
||
}
|
||
} |