ALBIREO CMS
version: 2025.07.15

Функции шифрования Albireo CMS

encodeURL64 decodeURL64 encryptDecrypt

Функция encodeURL64

Функция для безопасного кодирования строк с сохранением целостности данных при передаче через URL.

Сигнатура

function encodeURL64(string $str): string

Аргументы

string $str
Исходная строка для кодирования. Может содержать любые данные.

Возвращаемое значение

Закодированная строка (string) в формате:

[8-символьный хэш CRC32][данные в base64 с заменой символов]

Алгоритм работы

  1. Сжимает данные с помощью gzdeflate() (уровень сжатия 9 - максимальный)
  2. Вычисляет 8-символьный хэш CRC32b для проверки целостности
  3. Кодирует данные в base64
  4. Заменяет символы '+', '/', '=' на '._-' для URL-безопасности
  5. Объединяет хэш и закодированные данные

Примеры использования

// Базовое кодирование
$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

Функция decodeURL64

Функция для безопасного декодирования строк, закодированных методом encodeURL64().

Сигнатура

function decodeURL64(string $str): string|false

Аргументы

string $str
Строка, закодированная функцией encodeURL64(). Должна содержать 8-символьный хэш и данные в base64.

Возвращаемое значение

Декодированная строка (string) или false в случае:

  • Неверного формата входных данных
  • Несоответствия контрольной суммы
  • Ошибки распаковки данных

Алгоритм работы

  1. Извлекает 8-символьный хэш CRC32 из начала строки
  2. Заменяет URL-безопасные символы (._-) на стандартные base64 (+/=)
  3. Декодирует строку из base64 в бинарный формат
  4. Проверяет соответствие хэша декодированным данным
  5. Распаковывает данные с помощью 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
  • Не используйте для декодирования непроверенных пользовательских данных
  • Для критически важных данных рассмотрите дополнительное шифрование

Функция 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 при дешифровании