babaev-an f3db4e8041 20250728 1.2.2
[-] Удалён интерфейс IStoredAtSQL (перемещён в пакет php_db_components_pack.

[+] Добавлен класс шифрования Encryptor.
2025-07-28 16:51:22 +03:00

60 lines
2.0 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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);
}
}