Функции шифрования Albireo CMS
decodeURL64 encodeURL64 encryptDecrypt
Функция decodeURL64
Функция для безопасного декодирования строк, закодированных методом encodeURL64().
Сигнатура
function decodeURL64(string $str): string|false
Аргументы
- string
$str - Строка, закодированная функцией
encodeURL64(). Должна содержать 8-символьный хэш и данные в base64.
Возвращаемое значение
Декодированная строка (string) или false в случае:
- Неверного формата входных данных
- Несоответствия контрольной суммы
- Ошибки распаковки данных
Алгоритм работы
- Извлекает 8-символьный хэш CRC32 из начала строки
- Заменяет URL-безопасные символы (._-) на стандартные base64 (+/=)
- Декодирует строку из base64 в бинарный формат
- Проверяет соответствие хэша декодированным данным
- Распаковывает данные с помощью gzinflate()
Примеры использования
// Базовое кодирование
$encoded = encodeURL64('confidential information');
// Использование в URL параметрах
$params = ['id' => 123, 'token' => 'abc'];
$query = encodeURL64(json_encode($params));
$url = "https://example.com/api?data={$query}";
// Декодирование обратной функцией
$original = decodeURL64($encoded);
Особенности
- Использует строгий режим
base64_decode() - Контрольная сумма проверяется перед распаковкой
- Обрабатывает исключения при распаковке
- Оптимизирована для работы с URL (замена проблемных символов)
Рекомендации по безопасности
- Всегда проверяйте результат на false
- Не используйте для декодирования непроверенных пользовательских данных
- Для критически важных данных рассмотрите дополнительное шифрование
Функция encodeURL64
Функция для безопасного кодирования строк с сохранением целостности данных при передаче через URL.
Сигнатура
function encodeURL64(string $str): string
Аргументы
- string
$str - Исходная строка для кодирования. Может содержать любые данные.
Возвращаемое значение
Закодированная строка (string) в формате:
[8-символьный хэш CRC32][данные в base64 с заменой символов]
Алгоритм работы
- Сжимает данные с помощью
gzdeflate()(уровень сжатия 9 - максимальный) - Вычисляет 8-символьный хэш CRC32b для проверки целостности
- Кодирует данные в base64
- Заменяет символы '+', '/', '=' на '._-' для URL-безопасности
- Объединяет хэш и закодированные данные
Примеры использования
// Базовое кодирование
$encoded = encodeURL64('confidential information');
// Использование в URL параметрах
$params = ['id' => 123, 'token' => 'abc'];
$query = encodeURL64(json_encode($params));
$url = "https://example.com/api?data={$query}";
// Декодирование обратной функцией
$original = decodeURL64($encoded);
Особенности
- Сжатие уменьшает размер данных перед кодированием
- Контрольная сумма позволяет обнаружить повреждение данных
- URL-безопасные символы: ._- вместо +/=
- Максимальный уровень сжатия (9) для минимизации размера
Рекомендации
- Не подходит для чувствительных данных без дополнительного шифрования
- Всегда проверяйте результат
decodeURL64()на false
Функция encryptDecrypt
Функция для симметричного шифрования/дешифрования данных с использованием OpenSSL. Получает секретный ключ из конфигурации (secretKey) или использует SITE_URL.
Сигнатура
function encryptDecrypt(string $action, string $data): string|false
Аргументы
- string
$action - Тип операции:
'encrypt'для шифрования или'decrypt'для дешифрования - string
$data - Данные для обработки (исходный текст при шифровании, зашифрованная строка при дешифровании)
Возвращаемое значение
Результат операции (string) или false в случае ошибки.
Примеры использования
// Шифрование данных
$sensitiveData = 'credit card number';
$encrypted = encryptDecrypt('encrypt', $sensitiveData);
// Дешифрование данных
$original = encryptDecrypt('decrypt', $encrypted);
Безопасность
- Использует стандартный алгоритм AES-256-CBC
- Требует надежного секретного ключа в конфигурации
- Результат шифрования кодируется в base64
Рекомендации
- Всегда используйте надежный
secretKeyв конфигурации - Не используйте
SITE_URLв качестве ключа в production - Проверяйте результат на
falseпри дешифровании