Поле Шифрование
Поле коллекции: шифрованиеProfessional Edition+Введение
Вы можете шифровать чувствительные бизнес-данные — например, номера телефонов клиентов, email-адреса или номера карт — чтобы в базе данных они хранились в виде шифротекста.

Метод шифрования
Плагин автоматически генерирует ключ приложения (application key), который хранится в директории /storage/apps/main/encryption-field-keys.
Каждый application key сохраняется в файле, имя которого является ID ключа, с расширением .key. Не переименовывайте эти файлы.
Храните файлы application key в безопасности. При потере файла application key расшифровать данные будет невозможно.
/storage/apps/${sub-app-name}/encryption-field-keysКак это работает
Плагин использует схему Конвертного шифрование.

Создание ключа приложения и ключа поля
- При создании первого зашифрованного поля NocoBase автоматически генерирует 32-байтный
application key, сохраняет его в директории по умолчанию и кодирует в base64. - При каждом создании нового зашифрованного поля система генерирует случайный 32-байтный
ключ поля(field key), шифрует его с использованиемapplication keyи случайно сгенерированного 16-байтноговектора инициализации поля (field IV)(AES), затем сохраняет зашифрованный результат в колонкеoptionsтаблицыfields.
Процесс шифрования поля
- При записи данных в зашифрованное поле NocoBase получает зашифрованные
field keyиfield IVиз колонкиoptionsтаблицыfields. - Система расшифровывает
field keyс использованиемapplication keyиfield IV. Затем шифрует фактические данные с использованиемfield keyи случайно сгенерированного 16-байтногоdata IV(AES). - Расшифрованный
field keyтакже используется для подписи открытог о текста черезHMAC-SHA256, в результате чего формируетсяdata signatureв base64 (используется позже для запросов). - 16-байтный
data IVиciphertextобъединяются и кодируются в base64. data signatureв base64 иciphertextв base64 объединяются через разделитель..- Итоговая строка сохраняется в базе данных.
Переменные окружения
Если вы хотите использовать собственный application key, можно задать переменную окружения ENCRYPTION_FIELD_KEY_PATH. Плагин загрузит все .key файлы из этой директории как application keys.
Требования к файлу ключа приложения:
- Расширение файла должно быть
.key. - Имя файла трактуется как ID ключа; рекомендуется использовать UUID.
- Содержимое файла должно быть 32-байтными бинарными данными, закодированными в base64.
Настройка поля

Как шифрование влияет на фильтрацию
Зашифрованные поля поддерживают только следующие операторы фильтрации: Равно, Не равно, Существует, Не существует

Внутренний механизм фильтрации
- Получить зашифрованный
field keyи расшифровать его с помощьюapplication key. - Использовать
field keyдля генерацииHMAC-SHA256 signatureдля пользовательского ввода. - Объединить подпись с
.и выполнить Поиск по префиксу (prefix search) по значению зашифрованного поля в базе данных.
Ротация ключей
Перед запуском команды ротации ключей nocobase key-rotation убедитесь, что этот плагин уже включен в приложении.
При переносе приложения в новое окружение может потребоваться заменить стары й application key. Для генерации нового application key используйте команду nocobase key-rotation.
Команда требует application key из старого окружения. После запуска NocoBase генерирует новый application key и заменяет старый. Новый ключ сохраняется в директории по умолчанию в кодировке base64.
Для ротации ключа дочернего приложения добавьте параметр --app-name:

